मुझे आज (डेटटाइम) ऑब्जेक्ट दो बार डार्ट में क्यों मिल रहा है ?!

for (var i = 0; i < 7; i++) {
DateTime currentDay = DateTime.now().subtract(Duration(days: i));
print(currentDay.toString());

}

उत्पादन

2019-10-24 23:52:47.109944 // same day
2019-10-24 00:52:47.115944 //same day
2019-10-23 00:52:47.115944
2019-10-22 00:52:47.115944
2019-10-21 00:52:47.115944
2019-10-20 00:52:47.115944
2019-10-19 00:52:47.115944

क्या मैं कुछ भूल रहा हूँ?

अपडेट करें

इस कोड ने इसे ठीक कर दिया, फिर भी इसे समझ में नहीं आया

 DateTime today=DateTime.now();
  for (var i = 0; i < 7; i++) {
    DateTime currentDay = today.subtract(Duration(days: i));
    print(currentDay.toString());
  }
}

क्या लूप बहुत तेज़ है, या यह मल्टीथ्रेडिंग का उपयोग कर रहा है?

0
skystar7 25 अक्टूबर 2019, 00:58

1 उत्तर

सबसे बढ़िया उत्तर

मेरा अनुमान है कि यह स्थानीय डेलाइट सेविंग टाइम के साथ कुछ करना है। .subtract दस्तावेज़ से:

ध्यान दें कि घटाई जा रही अवधि वास्तव में 50 * 24 * 60 * 60 सेकंड है। यदि परिणामी डेटटाइम में इससे भिन्न डेलाइट सेविंग ऑफ़सेट है, तो परिणाम का समय-समय पर यह समान समय नहीं होगा, और हो सकता है कि 50 दिन पहले कैलेंडर तिथि पर भी हिट न हो।

स्थानीय समय में तिथियों के साथ काम करते समय सावधान रहें।

डार्ट सिंगल-थ्रेडेड है, इसलिए बैकग्राउंड में कोई ऑटोमैटिक मल्टी-थ्रेडिंग नहीं चल रही है। लूप 'बहुत तेज़' नहीं है ... यह हर बार बढ़ रहा है I ऐसा लगता है कि डेटटाइम सोचता है कि उस दिन 25 घंटे हैं।

1
Kris 25 अक्टूबर 2019, 01:32