کار با تاریخ در دارت با کلاس DateTime

استفاده از تاریخ در خیلی موارد در اپلیکیشن ها استفاده می شود در زبان دارت هم مانند سایر زبان ها با استفاده از DateTime تاریخ گنجانده شده و می تونید خیلی راحت ازش استفاده کنید.
در به کار گیری تاریخ از کلاس DateTime استفاده میکنیم که تک تک متد های آن را بهتون آموزش می دهم.
now
به وسیله ی این متد می تونیم زمان فعلی را دریافت کنید.
print(DateTime.now()); // 2020–۰۴–۰۲ ۱۳:۴۹:۴۶٫۶۳۵
البته این روش تمامی مقادیر یعنی سال و روز و… بر می گرداند اما بعضی مواقع نیاز ما به چند مورد یا یکی از آن هاست فرضا می خواهیم روز را فقط دریافت کنیم در کل برای این کار کافی است به شکل زیر عمل کنیم.
var currDt = DateTime.now(); print(currDt.year); // 4 print(currDt.weekday); // 4 print(currDt.month); // 4 print(currDt.day); // 2 print(currDt.hour); // 15 print(currDt.minute); // 21 print(currDt.second); // 49
add
از این متد برای افزودن زمان به تاریخ مورد نظر ما استفاده می شود مثلا افزودن ۵ روز و ۵ ساعت و ۳۰ دقیقه به تاریخ فعلی.
var addDt = DateTime.now(); print(addDt.add(Duration(days: 5, hours: 5, minutes: 30))); //2020–۰۴–۰۷ ۲۱:۰۲:۰۹٫۳۶۷
is After And isBefore
به وسیله ی متد is After در کلاس DateTime می توانیم دو تاریخ را از نظر زمانی چک کنیم که آیا تاریخ مورد نظر از تاریخ دیگری جلوتر است یا خیر اگر درست بود مقدار True و درغیر این صورت Flase برگرندانده می شود .
var anotherDt = DateTime.now().subtract(Duration(days: 10, hours: 10)); print(addDt.isAfter(anotherDt)); // true
در مثال بالا با استفاده از متد subtract زمان مورد نظر را به وسیله ی مقادیر داده شده به همون میزان به عقب برمیگردانیم و خوب بعد چک می کنیم که زمان الان ایا بعد از زمان دستکاری شده قبلی است خوب طبعا نتیجه true است .
استفاده از isBefore هم مانند قبلی است با این تفاوت که برعکس عمل کرده و چک می کند آیا تاریخ مورد نظر از تاریخ دیگری عقب تر است یا خیر.
var subDt = DateTime.now().subtract(Duration(days: 10, hours: 10)); print(addDt.isBefore(subDt)); // false
difference

این متد تفاوت بین دو تاریخ مورد نظر را بر می گرداند برای این که بدانید چقدر باهم اختلاف دارند.
var diffDt = addDt.difference(subDt); // 249:59:59.999000 print(diffDt.inSeconds); print(diffDt.inHours); print(diffDt.inMinutes); print(diffDt.inDays);
isAtSameMomentAs
این متد بررسی می کند که آیا دو تاریخ مورد نظر یکسان است یا خیر و در صورت یکسان بودن مقدار true را برمی گرداند .
print(addDt.isAtSameMomentAs(anotherDt)); // false
parse
خوب گاهی وقت ها نیاز داریم که تاریخ مورد نظر که به صورت رشته است را به DateTime تبدیل کنیم خوب اینکار به راحتی انجام شدنی است.
String strDt = "1984–۰۴–۰۲"; DateTime parseDt = DateTime.parse(strDt); print(parseDt); // 1984–۰۴–۰۲ ۰۰:۰۰:۰۰٫۰۰۰
و زمانی که بخواهیم عکس عمل کنیم و تاریخ مورد نظر را به رشته به صورت شخصی سازی شده وارد کنیم می تونید از پکیج intl استفاده کنید و سپس از کد زیر بهره ببرید.
var newFormat = DateFormat("yy-MM-dd"); String updatedDt = newFormat.format(dt); print(updatedDt); // 20-04-03
و فرمت های دیگه آن .
DAY d ABBR_WEEKDAY E WEEKDAY EEEE ABBR_STANDALONE_MONTH LLL STANDALONE_MONTH LLLL NUM_MONTH M NUM_MONTH_DAY Md NUM_MONTH_WEEKDAY_DAY MEd ABBR_MONTH MMM ABBR_MONTH_DAY MMMd ABBR_MONTH_WEEKDAY_DAY MMMEd MONTH MMMM MONTH_DAY MMMMd MONTH_WEEKDAY_DAY MMMMEEEEd ABBR_QUARTER QQQ QUARTER QQQQ YEAR y YEAR_NUM_MONTH yM YEAR_NUM_MONTH_DAY yMd YEAR_NUM_MONTH_WEEKDAY_DAY yMEd YEAR_ABBR_MONTH yMMM YEAR_ABBR_MONTH_DAY yMMMd YEAR_ABBR_MONTH_WEEKDAY_DAY yMMMEd YEAR_MONTH yMMMM YEAR_MONTH_DAY yMMMMd YEAR_MONTH_WEEKDAY_DAY yMMMMEEEEd YEAR_ABBR_QUARTER yQQQ YEAR_QUARTER yQQQQ HOUR24 H HOUR24_MINUTE Hm HOUR24_MINUTE_SECOND Hms HOUR j HOUR_MINUTE jm HOUR_MINUTE_SECOND jms HOUR_MINUTE_GENERIC_TZ jmv HOUR_MINUTE_TZ jmz HOUR_GENERIC_TZ jv HOUR_TZ jz MINUTE m MINUTE_SECOND ms SECOND s
امیدوارم از این آموزش دارت لذت برده باشید.
درباره پژمان
یک قطره از دریای بیکران فلاتر عاشق یادگیری به خصوص در حوزه برنامه نویسی
نوشته های بیشتر از پژمان
دیدگاهتان را بنویسید