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

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

JS 和 .NET 夏令時行為之間的差異

JS 和 .NET 夏令時行為之間的差異

C#
交互式愛情 2023-09-16 17:18:39
我試圖讓 C# 和 JS 在 JSDate和 .NETDateTime對象上添加分鐘數時生成相同的結果。我的系統使用希臘文化設置,但很可能您會在您的計算機上得到類似的結果(如果您使用這些值)。我有這個使用 moment.js 的 JS 代碼:var dt1 = new Date(2020, 0, 19, 0, 0, 0);var m1 = moment(dt1);[m1.toString(), m1.add(100980, 'minutes').toString()]>  ["Sun Jan 19 2020 00:00:00 GMT+0200", "Sun Mar 29 2020 04:00:00 GMT+0300"]..LinqPad 中的 C# 代碼:var ci = CultureInfo.CreateSpecificCulture("el-GR"); //CultureInfo.InvariantCulture; //CultureInfo.CurrentCulture;var dt = new DateTime(2020, 1, 19, 0, 0, 0, 0, ci.Calendar, DateTimeKind.Local);dt.ToString("G", ci).Dump();var dt2 = dt.AddMinutes(100980);dt2.ToString("G", ci).Dump();> 19/1/2020 12:00:00 πμ> 29/3/2020 3:00:00 πμ...并且在使用不變文化進行打印時:var ci = CultureInfo.CreateSpecificCulture("el-GR"); //CultureInfo.InvariantCulture; //CultureInfo.CurrentCulture;var dt = new DateTime(2020, 1, 19, 0, 0, 0, 0, ci.Calendar, DateTimeKind.Local);dt.ToString("G", CultureInfo.InvariantCulture).Dump();var dt2 = dt.AddMinutes(100980);dt2.ToString("G", CultureInfo.InvariantCulture).Dump();> 01/19/2020 00:00:00> 03/29/2020 03:00:00有人能告訴我為什么會得到不同的結果嗎?系統設置是相同的,我嘗試使用兩者CurrentCulture,但 CreateSpecificCulture("el-GR")沒有得到與 JS 結果有任何相似之處。我什至用JS創建了自己的addMinutes(),但仍然有同樣的問題??雌饋?JS 正好在開始日期后的 100980 分鐘執行夏令時切換(如果添加 100979 分鐘,您就會看到這一點),但 C# 卻沒有!根據維基百科,JS 的行為是正確的行為。但到目前為止我非常確定 .NET 也是正確的。根據我所做的快速測試,C# 似乎在 70.2 天前進行了切換。在向日期添加分鐘數時,為了在兩種語言之間獲得相同的結果,我需要做什么?
查看完整描述

2 回答

?
Helenr

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

問題是調用是在withAddMinutes上完成的。盡管有這種標記,但對象的數學運算并不考慮時區。 即使是當地時間。DateTimeDateTimeKind.LocalDateTime

由于您使用的是本地類型,因此您可以簡單地轉換為 UTC,進行數學計算,然后再轉換回來。

var dt2 = dt.ToUniversalTime().AddMinutes(100980).ToLocalTime();

您可能還想考慮使用該DateTimeOffset類型,并使用TimeZoneInfo.ConvertTime.


查看完整回答
反對 回復 2023-09-16
?
繁華開滿天機

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

NodaTime正如我在問題更新中所寫的那樣,我最終使用了。

它仍然不同意moment.js所有的時間,但我覺得它更經常地同意它。

我想夏令時是一個巨大的混亂,沒有人能夠很好地處理它。


查看完整回答
反對 回復 2023-09-16
  • 2 回答
  • 0 關注
  • 129 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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