我必須在.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