2013-11-14 31 views
3

我正在創建一個基於英國的網站,因此我的網站上的用戶通常會使用格式dd/mm/yyyy。我爲用戶創建了一個日期選擇器,並且它工作正常,直到我選擇第13天(2013年10月13日)。我猜數據庫將這個視爲美國的日期,因此一年中沒有13個月。WebMatrix - 美國日期/時間格式證明是一個問題

我需要對我的代碼做些什麼來將其轉換爲正確的格式,或將我的數據庫更改爲使用英國格式?什麼是最簡單的?

if(IsPost){ 
    var dateis = Request["date"]; 
    var insert = "INSERT INTO TestTable (testdate) VALUES (@0)"; 
    var qinsert = db.Execute (insert, Request["date"]); 
} 
} 
<div class="container"> 
<h1>Bootstrap Datepicker</h1> 
<form method="post"> 
<div class="input-append date" id="dp3"> 
<input class="span2" name="date" size="16" type="text" value=""> 
<span class="add-on"><i class="icon-th"></i></span> 
</div> 
<button class="btn btn-success" type="submit" value="Submit"/>Submit</button> 
</form> 
</div> 
<script type="text/javascript"> 
$('#dp3').datepicker({ 
    format: "dd/mm/yyyy", 
    autoclose: true, 
    todayHighlight: true 
}) 
</script> 

回答

2

我個人使用格式d MM yyyy作爲datepickers(例如2013年11月14日)。它佔用更多的空間,但對我來說它更具可讀性,完全避免了dd/mm/yyyymm/dd/yyyy問題。

如果您想保持它的方式,只要您的開發機器和服務器機器在英國時間正確配置,就可以使用AsDateTime()擴展方法來解決問題。

var qinsert = db.Execute (insert, Request["date"].AsDateTime()); 

麥克的另一種回答指出,這並不是雖然最佳實踐 - 其代碼是依賴於服務器的設置等能夠輕鬆地回來困擾你。

1

通常,建議您將日期存儲爲yyyy/mm/dd hh:mm:ss格式。這樣,區域變化就沒有問題。另外,如果您的應用程序是全球性的,您可能需要考慮使用UTC,以便在不同的服務器時間內沒有問題。

+0

但我說的是數據庫(我使用sql express,而不是CE),只在美國(mm/dd/yyyy)存儲?即時通訊所有的存儲它,因爲你已經建議,但這仍然會拋出錯誤,當我嘗試並將其輸入到數據庫中。它告訴我我有一個「超出範圍的值」 – Gavin5511

+0

數據庫內部以二進制格式存儲日期,而不是格式化的字符串 - 假設您使用'datetime2'或'date'作爲列類型。 – Polynomial

+0

@Gavin,你應該閱讀:http://sqlmag.com/sql-server/solving-datetime-mystery。 –