???如何获取今天所在的周是本月的第几周

chenjinaban 2007-08-02 09:55:38
???如何获取今天所在的周是本月的第几周 谢谢
...全文
1681 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mingle_Qin 2007-08-03
  • 打赏
  • 举报
回复
int iCount = 0;
DateTime dtDate = DateTime.Now;
DateTime dtOneInMonth = Convert.ToDateTime(dtDate.ToString("yyyy-MM") + "-01");
int iWeek = 1; //每月无论几号,至少是一周起.

int iDow = ((int)dtOneInMonth.DayOfWeek);
//第二周的周日对应的本月号数
iCount = (7 - iDow) + 1;
//如果不是处于第一周,则运算
if (dtDate.Day >= iCount)
{
iWeek = iWeek + (int)((dtDate.Day - iCount) / 7) + 1;
}

MessageBox.Show(iWeek.ToString());


分析一下:
求周,主要是用:(int)(Day / 7) +1;这里可用取模,但在下忘了取模的运算符:(
如果本月1号是定位在周日,则上述公式成立,但很多情况是1号并不是周日,所以,运算时从第二周算起.

即,算出第二周的周日是本月的几号,之后用当前日去掉第一周的天数,然后按上述公式计算.

说白了,就是放弃了对第一周的运算,从第二周起,因为第二周的周日肯定有个日期,而第一周的周日就未必有日期.取巧而已.
Macosx 2007-08-03
  • 打赏
  • 举报
回复
楼主的信誉分好低啊
你双击任务栏上的时间 看看每个月的15号是不是只能出现在第3行上
破碎的脸 2007-08-03
  • 打赏
  • 举报
回复
代码就不用写了吧。就说说原理
先得到这个月的总天数。先得到这个月的第一天是星期几(这个不难吧),然后用当前号数除以七,得出来的数加上剩余天数加上这个月的第一天的星期几看是否大于七,如果大于增加一否则不增加(我是按周一为新一周的开始计算的)。最后得出来的数就是你要的答案了。
chenjinaban 2007-08-03
  • 打赏
  • 举报
回复
MicroDeviser(‰絔纱湮→しovの·んeТ)

不对阿

比如8。2 就不对了
chenjinaban 2007-08-03
  • 打赏
  • 举报
回复
楼上的一看就不对
比如1月15号
沙结果啊
Macosx 2007-08-02
  • 打赏
  • 举报
回复
用这么费事?
int dayofweek = (int)DateTime.Now.DayOfWeek;
Console.WriteLine((dayofweek+6)/7);
chenjinaban 2007-08-02
  • 打赏
  • 举报
回复
good, upstairs, thanx
MicroDeviser 2007-08-02
  • 打赏
  • 举报
回复
int currentWeek = 0;

//构造当前月的1号
DateTime dd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
//获得当前月1号是一个星期的第几天

int week = (int)dd.DayOfWeek;

//用来存储,当第一天不是星期天时,这个星期还有多少天
int t1 = 0;
if (week > 0)
{
//如果不是一个星期日
currentWeek++;
t1 = 7 - week;
}


int t2 = (DateTime.Now.Day - t1) % 7;

int t3 = 0;
if (t2 != 0)
{
t3 = (DateTime.Now.Day - t1) / 7 + 1;
}
else
{
t3 = (DateTime.Now.Day - t1) / 7;
}

currentWeek += t3;

这样就可以了
leixueqiyi 2007-08-02
  • 打赏
  • 举报
回复
没有现成的方法,我原来想写但没时间,如果LZ做出来,就发出来
kingonehappy 2007-08-02
  • 打赏
  • 举报
回复
楼上几个人说的挺好的,LZ好好想下
chenjinaban 2007-08-02
  • 打赏
  • 举报
回复
我有一个,但是测试出来不对
int WeekDay(int y,int m, int d)
{
if(m==1) m=13;
if(m==2) m=14;
int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return week;
}
int MyWeek(int y,int m, int d)
{
int a,b;
a=WeekDay(y,m,1);
b=WeekDay(y,m,d);
if(a==7)
a=0;
if(b==7)
b=0;
int result=d-(7-a+7-b);
if(result==0)
result=result+2;
else
result=result/7+2;
return result;

}
chenjinaban 2007-08-02
  • 打赏
  • 举报
回复
要有全新的
viena 2007-08-02
  • 打赏
  • 举报
回复
同意楼上
而且一周的起止要定好
中国习惯周一到周日算一周
西方习惯周日到周六算一周
marysxj 2007-08-02
  • 打赏
  • 举报
回复
#region 得到当前日期是该年度的第几周,此处需要注意的是:不能从该年的1-1算起,判断该年的1-1是星期几,如果是周一,那么从1-1算起,如果非周一,要将偏移量减去
/// <summary>
/// 能够得到该年有多少周,传递参数的时候“当前年+12-31”
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public string GetWeek(DateTime dt)
{
string returnStr="";
System.DateTime fDt=DateTime.Parse(dt.Year.ToString()+"-01-01");
int k=Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几
if(k==0)
{
k=7;
}
int l=Convert.ToInt32(dt.DayOfYear);//得到当天是该年的第几天
l=l-(7-k+1);
if(l<=0)
{
returnStr="1";
}
else
{
if (l % 7 == 0)
{
returnStr=(l/7+1).ToString();
}
else
{
returnStr=(l/7 +2).ToString();//不能整除的时候要加上前面的一周和后面的一周
}
}
return returnStr;
}
#endregion

这是我自己写的一个,希望对你有所帮助。注释一看就明白了
lovingkiss 2007-08-02
  • 打赏
  • 举报
回复
按照自己的想法来编写,基本上就是乘除加减,小学的知识

==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发
联系方式:Q64180940(请清楚注明业务还是技术咨询) 全天在线
==================================================================
lovingkiss 2007-08-02
  • 打赏
  • 举报
回复
这个没有现成函数,而且,怎么算第几周?前面如果有半周时间怎么算?

简单的自己计算就是了~~
MicroSoftor 2007-08-02
  • 打赏
  • 举报
回复
今天的日数 加上本月第一周缺少的天数 除以7 用Math.Ceiling整数即可

代码自己实现
MicroDeviser 2007-08-02
  • 打赏
  • 举报
回复
是指全新的一周还是?

如果不是可以用今天除七取整再加一

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧