簡體   English   中英

使用ExtJs在asp.net MVC和WebApi應用程序中的MacO上序列化Safari的日期

[英]Serializing dates for Safari on MacOs in asp.net MVC & WebApi app with ExtJs

我繼承了一個Web應用程序應用程序,該應用程序使用此設置來序列化日期/時間值。

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;

該應用程序的所有用戶均位於PST時區。

Firefox和Chrome瀏覽器將“ yyyy-mm-ddThh:mi:ss”值解析為本地日期(對於瀏覽器而言為本地)。 但是,Safari將"2019-08-16T00:00:00" (即new Date("2019-08-16T00:00:00") "Thu Aug 15 2019 17:00:00 GMT-0700 (PDT)""Thu Aug 15 2019 17:00:00 GMT-0700 (PDT)"而其他兩個瀏覽器將日期解析為"Fri Aug 16 2019 00:00:00 GMT-0700 (Pacific Daylight Time)" 。換句話說,Safari認為該日期在祖魯時區(UTC),其他瀏覽器則將其解釋為處於當地時區。

該應用程序使用ExtJs 6.6,由於此問題,由於2019-08-16T00:00:00在Safari中以2019-08-15的形式呈現在數據庫中(在表格的網格或日期字段中),因此保存了該值。

我還創建了一個sencha小提琴來在此重現此問題。 當您在野生動物園中運行小提琴時,“某些日期”字段將包含2019年8月15日,而在Chrome和FF中,它將包含2019年8月16日。

我知道,根據規范正確的值應加時區(請參閱一樣)。 例如,此值在所有瀏覽器中都適用: "2019-08-16T00:00:00-07:00"

在應用程序中使用DateTimeZoneHandling.Local可能是一個更好的選擇,但是,現在更改此值可能需要大量的測試工作。 沒有/也沒有授權支持MacOs和Safari用戶。 但是,我個人覺得這個問題很煩人,並且我想探索解決這個問題的方法。

還有哪些其他選項可解決Safari的此問題? 是否有一個腳本可以修補Safari中JavaScript日期的行為以使其與FireFox / Chrome中的行為相同? 另一個選擇是更改ExtJ中這些值的解析,但是我不知道該在哪里完成。 我可以使用new Date(year, month, day-of-month, hour, minutes, seconds) ,它也可以在Safari中創建本地日期。

還有其他想法嗎?

謝謝

我最終應用了此補丁:

if (Ext.browser.is.Safari) {
  Ext.data.field.Date.override({
    dateReadFormat: 'Y-m-dTH:i:s'
  });
}

ExtJs用於解析json值的方法使用此日期/時間格式,而生成的日期使用本地時區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM