在我的應用程式中,我創建了一個 for 回圈,該回圈列印連續 600 個日期以匹配用戶輸入的日期。我將 INTL 庫用于日期。這是代碼的一部分:
var date = []; // is the list that will contain all dates.
unformatted_date = Datetime.now(); //or the one entered by the user
for(var i = 1; i<600; i ){
date.add(unformatted_date.add(Duration(days: i)));
}
例如,如果我插入 2021 年 5 月 5 日作為初始日期,則回圈總是在 10 月 30 日列印兩次。即使在其他日期,它恰好有兩個相等。很少發生日期不存在,沒有列印的情況
uj5u.com熱心網友回復:
問題很可能是 DST(夏令時)。重要的是要了解add()onDateTime記錄在:
請注意,添加的持續時間實際上是 50 * 24 * 60 * 60 秒。如果結果
DateTime的夏令時偏移量與 不同this,則結果的時間與 不同this,甚至可能不會在 50 天后達到日歷日期。使用當地時間的日期時要小心。
https://api.dart.dev/stable/2.15.1/dart-core/DateTime/add.html
因此,如果您添加一天,則假定該天是 24 小時,這在 DST 班次的情況下是不正確的。
您應該在添加時使用 UTC 時間(因為 UTC 沒有 DST)DateTime,然后在需要顯示日期時將其轉換回本地時間(如果時間對于正確顯示給用戶很重要)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420874.html
標籤:
