C#时间函数扩展及时间字符串函数
来源:互联网 发布:qq飞车辅助源码 编辑:程序博客网 时间:2024/05/18 19:22
C# 语言中通过System.DateTime提供了很多关于时间处理的方法,使用起来比较方便。在近来的一个项目中,涉及到一个以week作为周期处理时间的应用。这样,我们希望实现:1、在知道某日期的前提下,能知道该日期在当年的第几周;2、在知道当年的第几周的前提下,能获取该周的起止日期;3、获取本周的起止日期。为此,我写了以下的三个函数,来实现这些功能。
1、计算某天属于当年的第几周:
//计算某天属于当年的第几周
private int GetWeekOrderOfDate(DateTime Date)
...{
//当天所在的年份
int year = Date.Year;
//当年的第一天
DateTime firstDay = new DateTime(year, 1, 1);
//当年的第一天是星期几
int firstOfWeek = Convert.ToInt32(firstDay.DayOfWeek);
//当年第一周的天数
int firstWeekDayNum = 7 - firstOfWeek;
//传入日期在当年的天数与第一周天数的差
int otherDays = Date.DayOfYear - firstWeekDayNum;
//传入日期不在第一周内
if (otherDays > 0)
...{
int weekNumOfOtherDays;
if (otherDays % 7 == 0)
...{
weekNumOfOtherDays = otherDays / 7;
}
else
...{
weekNumOfOtherDays = otherDays / 7 + 1;
}
return weekNumOfOtherDays + 1;
}
//传入日期在第一周内
else
...{
return 1;
}
}
private int GetWeekOrderOfDate(DateTime Date)
...{
//当天所在的年份
int year = Date.Year;
//当年的第一天
DateTime firstDay = new DateTime(year, 1, 1);
//当年的第一天是星期几
int firstOfWeek = Convert.ToInt32(firstDay.DayOfWeek);
//当年第一周的天数
int firstWeekDayNum = 7 - firstOfWeek;
//传入日期在当年的天数与第一周天数的差
int otherDays = Date.DayOfYear - firstWeekDayNum;
//传入日期不在第一周内
if (otherDays > 0)
...{
int weekNumOfOtherDays;
if (otherDays % 7 == 0)
...{
weekNumOfOtherDays = otherDays / 7;
}
else
...{
weekNumOfOtherDays = otherDays / 7 + 1;
}
return weekNumOfOtherDays + 1;
}
//传入日期在第一周内
else
...{
return 1;
}
}
2、根据某年的某周,获取该周的起止日期:
//根据某年的第几周获取这周的起止日期
private void WeekRange(int year,int weekOrder, ref DateTime start, ref DateTime end)
...{
//非法参数
if (year <= 0 || weekOrder <= 0 || weekOrder > 53)
...{
return;
}
//当年的第一天
DateTime firstDay = new DateTime(year, 1, 1);
//当年的第一天是星期几
int firstOfWeek = Convert.ToInt32(firstDay.DayOfWeek);
//计算当年第一周的起止日期,可能跨年
int dayDiff = (-1) * firstOfWeek;
int dayAdd = 6 - firstOfWeek;
start = firstDay.AddDays(dayDiff).Date;
end = firstDay.AddDays(dayAdd).Date;
//如果不是要求计算第一周
if (weekOrder != 1)
...{
int addDays = (weekOrder -1)*7;
start = start.AddDays(addDays);
end = end.AddDays(addDays);
}
}
private void WeekRange(int year,int weekOrder, ref DateTime start, ref DateTime end)
...{
//非法参数
if (year <= 0 || weekOrder <= 0 || weekOrder > 53)
...{
return;
}
//当年的第一天
DateTime firstDay = new DateTime(year, 1, 1);
//当年的第一天是星期几
int firstOfWeek = Convert.ToInt32(firstDay.DayOfWeek);
//计算当年第一周的起止日期,可能跨年
int dayDiff = (-1) * firstOfWeek;
int dayAdd = 6 - firstOfWeek;
start = firstDay.AddDays(dayDiff).Date;
end = firstDay.AddDays(dayAdd).Date;
//如果不是要求计算第一周
if (weekOrder != 1)
...{
int addDays = (weekOrder -1)*7;
start = start.AddDays(addDays);
end = end.AddDays(addDays);
}
}
3、计算本周的起止日期:
//计算本周的起止日期
private void ThisWeekRange(ref DateTime start, ref DateTime end)
...{
DateTime dt = DateTime.Today;
int weekNow = Convert.ToInt32(dt.DayOfWeek);
int dayDiff = (-1) * weekNow;
int dayAdd = 6 - weekNow;
start = System.DateTime.Now.AddDays(dayDiff).Date;
end = System.DateTime.Now.AddDays(dayAdd).Date;
}
private void ThisWeekRange(ref DateTime start, ref DateTime end)
...{
DateTime dt = DateTime.Today;
int weekNow = Convert.ToInt32(dt.DayOfWeek);
int dayDiff = (-1) * weekNow;
int dayAdd = 6 - weekNow;
start = System.DateTime.Now.AddDays(dayDiff).Date;
end = System.DateTime.Now.AddDays(dayAdd).Date;
}
附:关于把时间转化成字符串的几个方法:
DateTime.Now.ToString(); //如:2007-5-19 12:46:29
DateTime.Now.ToLongDateString(); //如:2007年5月19日
DateTime.Now.ToLongTimeString(); //如:12:46:57
DateTime.Now.ToShortDateString(); //如:2007-5-19
DateTime.Now.ToShortTimeString(); //如:12:47
DateTime.Now.ToString("yyyyMMdd"); //如:20070519
DateTime.Now.ToString("yyyy-MM-dd"); //如:2007-05-19
DateTime.Now.ToString("yyyy年MM月dd日"); //如:2007年05月19日
DateTime.Now.ToString("yyyy~MM~dd"); //如:2007~05~19
DateTime.Now.ToString("yyyy年MM月dd日hh时mm分ss秒"); //如:2007年05月19日12时52分25秒
DateTime.Now.ToLongDateString(); //如:2007年5月19日
DateTime.Now.ToLongTimeString(); //如:12:46:57
DateTime.Now.ToShortDateString(); //如:2007-5-19
DateTime.Now.ToShortTimeString(); //如:12:47
DateTime.Now.ToString("yyyyMMdd"); //如:20070519
DateTime.Now.ToString("yyyy-MM-dd"); //如:2007-05-19
DateTime.Now.ToString("yyyy年MM月dd日"); //如:2007年05月19日
DateTime.Now.ToString("yyyy~MM~dd"); //如:2007~05~19
DateTime.Now.ToString("yyyy年MM月dd日hh时mm分ss秒"); //如:2007年05月19日12时52分25秒
- C#时间函数扩展及时间字符串函数
- C#时间函数扩展
- js 获取时间函数及扩展函数
- 时间扩展函数!
- 时间函数扩展
- js时间函数扩展
- c#常用函数方法及sql时间
- c#常用函数方法及sql时间
- c#常用函数方法及sql时间
- c#常用函数方法及sql时间
- C#中的时间函数
- c#时间日期函数
- C#时间函数
- C# 时间日期函数
- C#时间函数
- c#时间函数总结
- c#时间函数
- C#时间处理函数
- 应聘Java笔试时可能出现问题及其答案 (十)
- NBA总冠军之路~~~~
- flex和嵌入的swf
- 终于倒下了
- baidu分词算法分析
- C#时间函数扩展及时间字符串函数
- 中文分词算法
- 什么是MVC
- 应聘Java笔试时可能出现问题及其答案 (十一)
- H.264视频技术学习资源
- DTS与COPY(转)
- 很强的GD处理工具 ImageMagick
- abcgo
- 应聘Java笔试时可能出现问题及其答案 (十三)