کار با تاریخ در دارت با کلاس DateTime
استفاده از تاریخ در خیلی موارد در اپلیکیشن ها استفاده می شود در زبان دارت هم مانند سایر زبان ها با استفاده از DateTime تاریخ گنجانده شده و می تونید خیلی راحت ازش استفاده کنید.
در به کار گیری تاریخ از کلاس DateTime استفاده میکنیم که تک تک متد های آن را بهتون آموزش می دهم.
آموزش استفاده از تاریخ در زبان دارت و فلاتر
کلاس DateTime در زبان دارت (Dart) یک کلاس پیش فرض برای مدیریت و عملیات مرتبط با تاریخ و زمان است. این کلاس امکاناتی را فراهم میکند که به شما اجازه میدهد با تاریخ، زمان، و هر دو همزمان کار کنید.
با استفاده از این کلاس، شما میتوانید تاریخها و زمانها را ایجاد کنید، آنها را فرمت بدهید، به عملیات جبری بپردازید و تفاوت بین زمانها و تاریخها را محاسبه کنید.
برای استفاده از کلاس DateTime در زبان دارت، ابتدا باید کتابخانه مربوطه را import کنید. این کتابخانه به صورت پیش فرض در زبان دارت موجود است، بنابراین نیازی به نصب کتابخانه اضافی ندارید.
متدهای کلاس DateTime
برای استفاه از هر کلاسی در Flutter باید با توابع آن به شکل کامل آشنا باشید.
در زیر، توضیحی اجمالی از برخی از متدهای مهم کلاس DateTime در زبان دارت آمده است:
- ساخت نمونه DateTime:
- برای ساخت نمونه DateTime با تاریخ و زمان فعلی، میتوانید از متد
DateTime.now()
استفاده کنید. - برای ساخت نمونه DateTime با تاریخ و زمان خاص، میتوانید از متد
DateTime(year, month, day, hour, minute, second, millisecond, microsecond)
استفاده کنید.
- برای ساخت نمونه DateTime با تاریخ و زمان فعلی، میتوانید از متد
- عملیات فرمتبندی:
- برای فرمت بندی نمونه DateTime به رشته، میتوانید از متد
toString()
استفاده کنید. - برای فرمت بندی نمونه DateTime به شکل سفارشی، میتوانید از متد
format()
همراه با کلاس DateFormat استفاده کنید.
- برای فرمت بندی نمونه DateTime به رشته، میتوانید از متد
- عملیات جبری:
- میتوانید دو نمونه DateTime را با هم جمع یا تفریق کنید.
- میتوانید یک بازه زمانی (Duration) را به یک نمونه DateTime اضافه کنید یا از آن کم کنید.
- محاسبه تفاوت زمانی:
- میتوانید تفاوت بین دو نمونه DateTime را به صورت زمان یا بازه زمانی (Duration) محاسبه کنید.
در ادامه توابع مهم را به شکل عملی در زبان Dart بررسی میکنیم.
متد 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
فاصله بین دو زمان
این متد تفاوت بین دو تاریخ مورد نظر را بر می گرداند برای این که بدانید چقدر باهم اختلاف دارند.
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
امیدوارم از این آموزش دارت لذت برده باشید.
این توضیحات مختصری درباره کلاس DateTime در زبان دارت بود. با مراجعه به مستندات رسمی زبان دارت و کتابخانههای مرتبط، میتوانید اطلاعات بیشتری درباره عملکرد و استفاده از کلاس DateTime دریافت کنید.
درباره پژمان
یک قطره از دریای بیکران فلاتر عاشق یادگیری به خصوص در حوزه برنامه نویسی
نوشته های بیشتر از پژمان
دیدگاهتان را بنویسید