2009-10-25 54 views
2

我必須在.NET項目中處理日期和時間,我需要做的事情之一是獲取當前日期並在其上添加2周,並且如果用戶輸入的日期是在這兩個星期後拋出一個錯誤。或者,如果他們輸入的日期在當前日期之前,則拋出另一個錯誤。.NET中的時間戳

現在,我知道如何做到這一點,但沒有.NET似乎處理日期的方式。過去我只使用過時間戳(可能是因爲我過去所做的每件事都在Unix上),而.NET似乎沒有處理日期或時間的時間戳方式。

任何人都可以告訴我如何去做這件事嗎?

謝謝。

+0

你的意思是在.NET中的SQL時間戳的相同呢? – Tarik 2009-10-25 21:35:22

+0

你的問題有點含糊。你想知道如何使用'DateTime'類,或者如何使用Unix時間戳?或者完全不同的東西? – mgbowen 2009-10-25 21:36:03

+0

問題很明顯,如何驗證用戶輸入是在14天窗口內。 – 2009-10-25 21:41:22

回答

1

.NET中有DateTime類,但我並不真正瞭解您的意思,「.NET沒有處理日期的時間戳方式」。你的意思是生成或使用Unix時間戳的方法嗎?

到UNIX時間戳轉換爲DateTime,你可以這樣做:

DateTime epoch = new DateTime(1970, 1, 1); 
epoch = epoch.AddSeconds(timestamp); 

要增加兩個星期,你會使用AddDays方法。

0
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"); 
1
  // 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"); 
4
DateTime value = ...your code... 
DateTime today = DateTime.Today, max = today.AddDays(14); 
if(value < today || value > max) { 
    throw new ArgumentOutOfRangeException("value"); 
} 

一個關鍵點:只能訪問Now/Today一次在相關檢查 - 否則,你可以得到的只是在午夜鐘聲敲響的一些非常奇特的效果。一個極端的邊緣情況下,也許...

1

爲什麼不直接使用

if (objUserDate.Date > DateTime.Today.AddDays(14)) 
{ 
    //Error 1 
} 
else if (objUserDate.Date < DateTime.Today) 
{ 
    //Error 2 
} 
+0

+1使用DateTime.Today。如果一天中的時間不相關,則不應將其包含在計算中。 – Joren 2009-10-25 21:47:23

0

我可能會是這樣的:

DateTime twoWeeksFromNow = DateTime.Now.AddDays(14); 

if(enteredDateTime > twoWeeksFromNow) 
{ 
    throw "ERROR!!!"; 
}