![](/img/trans.png)
[英]Best way to remove hardcoded string in javascript with Asp.Net MVC
[英]The best way to deal with dates in a ASP.NET MVC - Javascript application
我們的應用程序heavilly依賴javascript(jQuery)。 因此,有很多“ application / json”請求。
我們一直在努力解決日期問題,但是盡管我們付出了很多努力,但仍無法弄清楚如何在ASP.NET MVC應用程序中處理日期。
這是我們想要的:
這里有問題:
日期客戶端對象始終具有最終用戶的時區。 JSON.stringify(new Date())
自動進行移位。
這個問題可以幫助您一點,但是我們需要記住在將日期發送到服務器之前先更改日期。 我們還需要記住,一旦我們執行了new Date('2012-10-19T10:23:47.778Z')
,就需要進行一次new Date('2012-10-19T10:23:47.778Z')
我們知道JSON不知道日期,但是使用JSON類似物會很好。解析將解析日期。
我們使用Newton Json.net對日期進行序列化/反序列化,但是它在DateTimeKind中進行。
題:
是否有一種優雅的方式在服務器和客戶端上使用日期? 我們需要將它作為整個應用程序中的一個交叉領域。
UPD:
我必須說得更清楚。 在我們的應用程序中,由於我們僅處理日期,因此不需要考慮客戶時區。
因此,如果服務器返回2012-10-19T10:23:47.778Z'
,則需要Date對象:
Fri Oct 19 2012 10:23:47 GMT+0300 (Kaliningrad Standard Time)
不
Fri Oct 19 2012 13:23:47 GMT+0300 (Kaliningrad Standard Time)
(日期已Fri Oct 19 2012 13:23:47 GMT+0300 (Kaliningrad Standard Time)
)
我強烈建議閱讀以下文章:
得出一般結論,您應該使用ISO日期:
.toJSON()
方法 JsonNetFormatter
與IsoDateTimeConverter
) 最好的方法可能是發送一個自1970-01-01T00:00:00Z以來的毫秒數的時間值(即UTC),然后您可以執行new Date(timeValue)
並將日期對象設置為該UTC時間。 它將基於客戶端系統時區設置返回日期和時間。
例如對我來說:
alert(new Date(0)); // Thu Jan 01 1970 10:00:00 GMT+1000 (EST)
如果您在客戶端上弄亂了該日期對象(例如添加一天),則只需發送回時間值即可:
var timeValue = 1350518400000; // 2012-20-18T00:00:00Z
var date = new Date(timeValue);
alert(date); // 2012-10-18T10:00:00UTC+1000
// add a day
date.setDate(date.getDate() + 1);
alert(date.getTime()); // 1350604800000
從第二個值中減去第一個timeValue,您將獲得86400000,這是一天中的毫秒數(如果該天超過了夏時制更改邊界,則無論哪種方式都將是一個小時)。 使用服務器上的時間值執行所需的操作,將其保留為數字或將其轉換為日期字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.