我必须在.NET项目中处理日期和时间,我需要做的事情之一是获取当前日期并在其上添加2周,并且如果用户输入的日期是在这两个星期后抛出一个错误。或者,如果他们输入的日期在当前日期之前,则抛出另一个错误。.NET中的时间戳
现在,我知道如何做到这一点,但没有.NET似乎处理日期的方式。过去我只使用过时间戳(可能是因为我过去所做的每件事都在Unix上),而.NET似乎没有处理日期或时间的时间戳方式。
任何人都可以告诉我如何去做这件事吗?
谢谢。
我必须在.NET项目中处理日期和时间,我需要做的事情之一是获取当前日期并在其上添加2周,并且如果用户输入的日期是在这两个星期后抛出一个错误。或者,如果他们输入的日期在当前日期之前,则抛出另一个错误。.NET中的时间戳
现在,我知道如何做到这一点,但没有.NET似乎处理日期的方式。过去我只使用过时间戳(可能是因为我过去所做的每件事都在Unix上),而.NET似乎没有处理日期或时间的时间戳方式。
任何人都可以告诉我如何去做这件事吗?
谢谢。
.NET中有DateTime
类,但我并不真正了解您的意思,“.NET没有处理日期的时间戳方式”。你的意思是生成或使用Unix时间戳的方法吗?
到UNIX时间戳转换为DateTime,你可以这样做:
DateTime epoch = new DateTime(1970, 1, 1);
epoch = epoch.AddSeconds(timestamp);
要增加两个星期,你会使用AddDays
方法。
var userInputDate = DateTime.Parse(someInput);
if(userInputDate > DateTime.Now.AddDays(14)) throw new ApplicationException("Dont like dates after 2 weeks of today");
if(userInputDate < DateTime.Now) throw new ApplicationException("Date shouldnt be before now, for some reason");
// Whatever class is able to retrieve the date the user just entered
DateTime userDateTime = Whatever.GetUserDateTime();
if (userDateTime > DateTime.Now.AddDays(14))
throw new Exception("The date cannot be after two weeks from now");
else if (userDateTime < DateTime.Now)
throw new Exception("The date cannot be before now");
DateTime value = ...your code...
DateTime today = DateTime.Today, max = today.AddDays(14);
if(value < today || value > max) {
throw new ArgumentOutOfRangeException("value");
}
一个关键点:只能访问Now
/Today
一次在相关检查 - 否则,你可以得到的只是在午夜钟声敲响的一些非常奇特的效果。一个极端的边缘情况下,也许...
为什么不直接使用
if (objUserDate.Date > DateTime.Today.AddDays(14))
{
//Error 1
}
else if (objUserDate.Date < DateTime.Today)
{
//Error 2
}
+1使用DateTime.Today。如果一天中的时间不相关,则不应将其包含在计算中。 – Joren 2009-10-25 21:47:23
我可能会是这样的:
DateTime twoWeeksFromNow = DateTime.Now.AddDays(14);
if(enteredDateTime > twoWeeksFromNow)
{
throw "ERROR!!!";
}
你的意思是在.NET中的SQL时间戳的相同呢? – Tarik 2009-10-25 21:35:22
你的问题有点含糊。你想知道如何使用'DateTime'类,或者如何使用Unix时间戳?或者完全不同的东西? – mgbowen 2009-10-25 21:36:03
问题很明显,如何验证用户输入是在14天窗口内。 – 2009-10-25 21:41:22