如何计算当前日期是本月的第几周? 不要复制别人的!自己有实际应用的代码!谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DateTime.Now().Day 判断当天是这个月的第几天第一几天 select datepart(week,getdate())-datepart(week,right('0'+cast(month(getdate()) as varchar(2)),2)+'/01/'+cast(year(getdate()) as varchar(4))) as wofm DateTime.Now().Day 判断当天是这个月的第几天 ,然后再除以一个7不就行了,如果结果小于等于1就等于1,大于1,是几就是几.int now=DateTime.Now().Day/7if(now<=1)Console.WriteLine("1");elseConsole.WriteLine(now.tostring()); 当前日期为dt,首先,获取当前日期的星期几dt.DayOfWeek再根据当前日期dt和星期几dt.DayOfWeek来求得当前日期dt所在周的开始日期(这里以周日作为一周的开始日期),开始日期:dt.AddDays(-(dt.DayOfWeek))如果开始日期和当前日期不是同一月份,那当前日期应该属于第一周,如果开始日期和当前日期是同一月份,用开始日期的日部分除以7,如果除的断,当期日期所属周为:开始日期除7的商,否则为商+1 static void Main(string[] args) { //如何计算当前日期是本月的第几周? //得到当前为这个月的第几天 int day = Convert.ToInt32(DateTime.Now.Day); Console.WriteLine("当前是这个月的第" + day + "天"); //得到是当前年的哪一天 int yearday = Convert.ToInt32(DateTime.Now.DayOfYear); Console.WriteLine(yearday); //得到当前年 int year = Convert.ToInt32(DateTime.Now.Year); Console.WriteLine(year); //得到月份 int month = Convert.ToInt32(DateTime.Now.Month); int totalDays = 0; bool inRn;//是否为闰年 if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { inRn = true; } else { inRn = false;//平年 } for (int i = 1900; i < year; i++) { /* 判断闰年或平年,并进行天数累加 */ if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { // 判断是否为闰年 totalDays = totalDays + 366; // 闰年366天 } else { totalDays = totalDays + 365; // 平年365天 } } Console.WriteLine(totalDays); int days = 0; int beforeDays = 0; for (int i = 1; i <= month; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 2: if (inRn) { days = 29; } else { days = 28; } break; default: days = 30; break; } if (i < month) { beforeDays = beforeDays + days; } } Console.WriteLine("此月份之前的天数" + beforeDays); totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数 int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0 int temp = 1 + totalDays % 7; // 从1900年1月1日推算 if (temp == 7) { // 求当月第一天 firstDayOfMonth = 0; // 周日 } else { firstDayOfMonth = temp; } Console.WriteLine("该月第一天是星期" + firstDayOfMonth); }//还真没想到这么麻烦 public static int GetWeekOfNow() { //今天是这个月的的几天 int days = DateTime.Today.Day; int weeks = 0; for(int i=1;i<=days;i++) { //返回日期 DateTime dayDate = new DateTime(DateTime.Now.Year,DateTime.Now.Month,i); //如果是星期一就算一周 if(Convert.ToInt32(dayDate.DayOfWeek) == 1) { weeks++; } } if(weeks == 0) { weeks++; } return weeks; } 算本月1号是星期几A,再算今天星期几B,今天是这个月的第几天C。if(A>=B) 结果=C/7+1;else if(A<B) 结果=C/7 这个月1号星期几A,今天星期几B,今天是这个月的第几天C。if(A>=B) 结果=A/7+1;else 结果=A/7; return (DateTime.Now.Day- DateTime.Now.DayOfWeek+6)/7+1; DateTime dt=DateTime.Now.Date;int weeknow = Convert.ToInt32(dt.DayOfWeek);int daydiff = (-1) * (weeknow+1);int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;int weeks = days/7;if(days%7 != 0){ weeks++;} 假设当月1日对应星期x( x = 0..6) 0代表星期日则第y天是 (y % 7) + (x != 0) Date dt=new Date();int md=dt.getDate();//DAY_OF_MONTHint wd=dt.getDay();//DAY_OF_WEEKint i=md-wd;int ii=1;//WEEK_OF_MONTHif(i>0){ ii=i/7+2;}System.out.println(ii); 19楼这个是对的不过最后应该 return weeks+1 吧 问题的实质是十进制与7进制的转换而已;不失一般性,假定星期天为一周之开头,则为0,依次星期1 2 3..6分别用1--6标识以本月为例,可以构造以下映射关系:----------------------------- 日期: 1 2 3 4 5 6 7 8 【十进制】周数-星期数: 13 14 15 16 20 21 22 23 【7进制】-----------------------------解析: 13代表第一周的星期三 若求某天是第几周,即求此映射关系里面的7进制数据的第二位解法: 假定本月第一天为x(0<=x<=6 ),求n号是第m周m=1+(n-1)/7+[(n-1)%7+x]/7至于x的算法可以通过常用的lib或者通过蔡勒公式来获取-----------------------------附录-蔡勒(Zeller)公式w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下,w:星期;c:世纪;y:年(两位数); m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。 提供给大家一个EXCEL中实现的方法:=ROUNDUP((ROUNDUP(A2,)-ROUNDUP("2009-1-1",2)+(IF(WEEKDAY(DATE(YEAR(NOW()),1,1))-1=0,7,WEEKDAY(DATE(YEAR(NOW()),1,1))-1)))/7,) SQL中 实现方法 设定查'2009-12-9'在12月的第几周 select ((day('2009-12-9')+(case when (datepart(dw,(dateadd(dd, -(day('2009-12-25')-1),'2009-12-25')))+6)%7<>0 then (datepart(dw,(dateadd(dd, -(day('2009-12-25')-1),'2009-12-25')))+6)%7 else 7 end )-2)/7+1 ) public int GetWeekOfMonth(DateTime date) { return (date.Day - (int)date.DayOfWeek ) / 7 + 1; } 用 week("时间")=week(now()) 看你们折腾半天也没个结果的,我把我的先发出来,有错误的话欢迎砖头。回复只为方便后来人。double day = dt.Day;double iDayOfWeek = (double)(Convert.ToInt32(dt.DayOfWeek));int NumOfWeek = Convert.ToInt32(Math.Round((day + 7 - iDayOfWeek) /7, 0)); C# Udp Socket网络编程 (在线等) C# 连接数据库 登录窗体,的代码,主要就是查询 用户名和密码的语句 C#WinForm中Treeview 中如何只能选取一个节点 timer控件问题 菜鸟再次求助 怎么取当前dll所在的位置?取出的不对!(高手请进,急) 关于.net remoting中使用代理的问题求教: 我想换个新工作,怎样成功率才高? 请问form里坐标怎样对应桌面的坐标? 关于序列化的问题 请问有人做过用HttpWebRequest通过"Post"方法,对https地址提交请求的吗? 减少三层架构代码量的问题
int now=DateTime.Now().Day/7
if(now<=1)
Console.WriteLine("1");
else
Console.WriteLine(now.tostring());
首先,获取当前日期的星期几dt.DayOfWeek
再根据当前日期dt和星期几dt.DayOfWeek来求得当前日期dt所在周的开始日期(这里以周日作为一周的开始日期),
开始日期:dt.AddDays(-(dt.DayOfWeek))
如果开始日期和当前日期不是同一月份,
那当前日期应该属于第一周,
如果开始日期和当前日期是同一月份,
用开始日期的日部分除以7,
如果除的断,当期日期所属周为:开始日期除7的商,否则为商+1
{ //如何计算当前日期是本月的第几周? //得到当前为这个月的第几天
int day = Convert.ToInt32(DateTime.Now.Day);
Console.WriteLine("当前是这个月的第" + day + "天");
//得到是当前年的哪一天
int yearday = Convert.ToInt32(DateTime.Now.DayOfYear);
Console.WriteLine(yearday);
//得到当前年
int year = Convert.ToInt32(DateTime.Now.Year);
Console.WriteLine(year);
//得到月份
int month = Convert.ToInt32(DateTime.Now.Month);
int totalDays = 0;
bool inRn;//是否为闰年
if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0)
{
inRn = true;
}
else
{
inRn = false;//平年
}
for (int i = 1900; i < year; i++)
{
/* 判断闰年或平年,并进行天数累加 */
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
{ // 判断是否为闰年
totalDays = totalDays + 366; // 闰年366天
}
else
{
totalDays = totalDays + 365; // 平年365天
}
}
Console.WriteLine(totalDays);
int days = 0;
int beforeDays = 0;
for (int i = 1; i <= month; i++)
{
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 2:
if (inRn)
{
days = 29;
}
else
{
days = 28;
}
break;
default:
days = 30;
break;
}
if (i < month)
{
beforeDays = beforeDays + days;
} }
Console.WriteLine("此月份之前的天数" + beforeDays);
totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数
int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0
int temp = 1 + totalDays % 7; // 从1900年1月1日推算
if (temp == 7)
{ // 求当月第一天
firstDayOfMonth = 0; // 周日
}
else
{
firstDayOfMonth = temp;
}
Console.WriteLine("该月第一天是星期" + firstDayOfMonth); }
//还真没想到这么麻烦
{
//今天是这个月的的几天
int days = DateTime.Today.Day;
int weeks = 0;
for(int i=1;i<=days;i++)
{
//返回日期
DateTime dayDate = new DateTime(DateTime.Now.Year,DateTime.Now.Month,i);
//如果是星期一就算一周
if(Convert.ToInt32(dayDate.DayOfWeek) == 1)
{
weeks++;
}
}
if(weeks == 0)
{
weeks++;
}
return weeks;
}
if(A>=B)
结果=C/7+1;
else if(A<B)
结果=C/7
if(A>=B)
结果=A/7+1;
else
结果=A/7;
int weeknow = Convert.ToInt32(dt.DayOfWeek);
int daydiff = (-1) * (weeknow+1);
int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;
int weeks = days/7;
if(days%7 != 0)
{
weeks++;
}
则第y天是
(y % 7) + (x != 0)
Date dt=new Date();
int md=dt.getDate();//DAY_OF_MONTH
int wd=dt.getDay();//DAY_OF_WEEK
int i=md-wd;
int ii=1;//WEEK_OF_MONTH
if(i>0){
ii=i/7+2;
}
System.out.println(ii);
19楼这个是对的
不过最后应该 return weeks+1 吧
不失一般性,假定星期天为一周之开头,则为0,依次星期1 2 3..6分别用1--6标识以本月为例,可以构造以下映射关系:
-----------------------------
日期: 1 2 3 4 5 6 7 8 【十进制】
周数-星期数: 13 14 15 16 20 21 22 23 【7进制】
-----------------------------
解析:
13代表第一周的星期三
若求某天是第几周,即求此映射关系里面的7进制数据的第二位解法:
假定本月第一天为x(0<=x<=6 ),求n号是第m周
m=1+(n-1)/7+[(n-1)%7+x]/7
至于x的算法可以通过常用的lib或者通过蔡勒公式来获取-----------------------------
附录-蔡勒(Zeller)公式w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下,w:星期;c:世纪;y:年(两位数); m:月(m大于等于3,小
于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1
月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。
select ((day('2009-12-9')+(case when (datepart(dw,(dateadd(dd, -(day('2009-12-25')-1),'2009-12-25')))+6)%7<>0 then (datepart(dw,(dateadd(dd, -(day('2009-12-25')-1),'2009-12-25')))+6)%7
else 7 end )-2)/7+1 )
{
return (date.Day - (int)date.DayOfWeek ) / 7 + 1;
}
回复只为方便后来人。
double day = dt.Day;
double iDayOfWeek = (double)(Convert.ToInt32(dt.DayOfWeek));
int NumOfWeek = Convert.ToInt32(Math.Round((day + 7 - iDayOfWeek) /7, 0));