亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 JSON 日期時間轉換為 C# 并忽略時區?

將 JSON 日期時間轉換為 C# 并忽略時區?

C#
倚天杖 2022-10-23 13:36:21
我有一個場景,用戶從角度輸入日期(例如 2018 年 11 月 30 日)。當我將此日期從 json 解析為 c# 時,它以 11/30/2018 4:00 或任何時區出現。如果我在像美國一樣的 -UTC 時區,這很好。如果我在印度或日本有用戶,則會轉換為 2018 年 11 月 29 日 5:30。這不好。無論用戶居住在哪個時區,如何轉換 json 并保留用戶輸入的日期?如果用戶在加利福尼亞州輸入 11/30/2018,而用戶在日本輸入 11/30/2018,則兩種情況下的最終結果都需要為 11/30/2018 0:00這是我下面的轉換代碼 strChangedData = [{\"EndDt\":\"2018-11-30T04:00:00.000Z\"}]List<MyModel> objMyModel = (List<MyModel>)Newtonsoft.Json.JsonConvert.DeserializeObject(strChangedData,                            typeof(List<MyModel>), GetJsonSettings());  public static JsonSerializerSettings GetJsonSettings()        {            var settings = new JsonSerializerSettings            {                DateFormatHandling = DateFormatHandling.IsoDateFormat,                DateTimeZoneHandling = DateTimeZoneHandling.Utc,                DateParseHandling = DateParseHandling.DateTime            };            return settings;        }
查看完整描述

4 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

實際上,請仔細檢查您的 json 代碼中的日期。我覺得它們可能已經在 javascript 中進行了轉換。


還將 jsonsettings 更改為


public static JsonSerializerSettings GetJsonSettings()

        {

            var settings = new JsonSerializerSettings

            {

                DateFormatHandling = DateFormatHandling.IsoDateFormat,

                DateTimeZoneHandling = DateTimeZoneHandling.Local,

                DateParseHandling = DateParseHandling.DateTime

            };


            return settings;

        }


查看完整回答
反對 回復 2022-10-23
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

你可能會取得一些成功IsoDatetimeConverter。我會嘗試這樣的事情:

var isoDateConverter = new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" };
var objMyModel = JsonConvert.DeserializeObject<List<MyModel>>(strChangedData, isoDateConverter);


查看完整回答
反對 回復 2022-10-23
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

如果當前使用的是 DateTime,您可能想要MyModel使用 DateTimeOffset。您可以使用 獲取日期.ToShortDateString(),但如果您不使用 DateTimeOffset,如果他們的用戶位于不同的時區,您可能會無意中更改日期。

這是一個例子:https ://dotnetfiddle.net/OA06L9


查看完整回答
反對 回復 2022-10-23
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

如果您的用戶選擇了一個日期,您不應該發回日期和時間以及時區偏移量。只需發送日期:

{"EndDt":"2018-11-30"}

然后,您無需更改 Json 解析器中的任何默認日期設置。

請注意,如果您的前端正在使用,則該屬性已屬性<input type="date">中提供給您。您不應從該值創建 JavaScript 對象。valueDate

但是,如果您使用的其他日期選擇器控件只返回一個Date對象,那么您需要從中提取本地年、月和日期來構造返回字符串。Moment.js 之類的庫可以提供幫助,一些日期選擇器可以原生使用 Moment。

如果您在這方面需要更具體的建議,請提供有關您的日期選擇器的更多信息。


查看完整回答
反對 回復 2022-10-23
  • 4 回答
  • 0 關注
  • 209 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號