如何将1到7之间的数字转换为C#中的DateTime对象,该对象代表星期几?这些数字来自我正在解析的XML文件。我正在检索包含1到7之间的数字的字段的每个实例,它代表星期日和星期六之间的星期几。
答案 0 :(得分:3)
我会假设投射到DayOfWeek对象会给你一周中的某一天
DayOfWeek day = (DayOfWeek)myInt;
就DateTime对象而言,该对象代表特定的一天,不一定是一周中的随机日。如果这是你想要达到的目的,你可以尝试在特定日期添加#天。
http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx
答案 1 :(得分:1)
要获得DateTime
,您需要一个特定的日期范围,您希望工作日不在其中(因为DateTime
是特定的日期和时间,而工作日不是“T)。
有一个DayOfWeek
枚举(其值实际上为0-6)。如果您需要的是表示星期几的东西,那么您应该能够将int转换为DayOfWeek
之类的..
DayOfWeek myDay = (DayOfWeek)yourInt;
如果您需要实际DateTime
,则需要开始日期。然后你可以做......
DateTime myDate = startDate.AddDays(
(int)startDate.DayOfWeek >= yourInt ?
(int)startDate.DayOfWeek - yourInt :
(int)startDate.DayOfWeek - yourInt + 7);
这将为您描述的一周中某一天的下一个实例提供DateTime。
答案 2 :(得分:1)
DateTime
实例始终代表一个完整的日期,不仅可以代表一周中的某一天。如果实际日期无关紧要,请采取任何星期一(假设0表示星期一),只需添加当天的号码。
Int32 dayOfWeek = 3;
// date represents a thursday since 2009/04/20 is a monday
DateTime date = new DateTime(2009, 04, 20).AddDays(dayOfWeek);
否则我同意Adam Robinson的回答 - 如果你只想举行一周的日子,坚持使用DayOfWeek enum(零是星期日),而不是使用整数。
答案 3 :(得分:1)
DayOfWeek.Sunday为零,因此您可以从您知道星期日的任意固定日期开始,并添加0到6之间的值:
public DateTime GetDayOfWeek(int dayOfWeek)
{
if (dayOfWeek < 0 || dayOfWeek > 6) throw new ArgumentOutOfRangeException(...);
// 4 January 2009 was a Sunday
return new DateTime(2009,1,4).AddDays(dayOfWeek);
}
我不知道为什么你会这么想。
如果您只希望它获得星期几的本地化版本,请执行以下操作:
GetDayOfWeek(3).ToString("dddd"); // Gets name of day of week for current culture
另一种方法是将DateTimeFormatInfo.DayNames或DateTimeFormatInfo.AbbreviatedDayNames用于您想要的文化。