استفاده از تاریخ در خیلی موارد در اپلیکیشن ها استفاده می شود در زبان دارت هم مانند سایر زبان ها با استفاده از DateTime تاریخ گنجانده شده و می تونید خیلی راحت ازش استفاده کنید.
در به کار گیری تاریخ از کلاس DateTime استفاده میکنیم که تک تک متد های آن را بهتون آموزش می دهم.
کلاس DateTime در زبان دارت (Dart) یک کلاس پیش فرض برای مدیریت و عملیات مرتبط با تاریخ و زمان است. این کلاس امکاناتی را فراهم میکند که به شما اجازه میدهد با تاریخ، زمان، و هر دو همزمان کار کنید.
با استفاده از این کلاس، شما میتوانید تاریخها و زمانها را ایجاد کنید، آنها را فرمت بدهید، به عملیات جبری بپردازید و تفاوت بین زمانها و تاریخها را محاسبه کنید.
برای استفاده از کلاس DateTime در زبان دارت، ابتدا باید کتابخانه مربوطه را import کنید. این کتابخانه به صورت پیش فرض در زبان دارت موجود است، بنابراین نیازی به نصب کتابخانه اضافی ندارید.
برای استفاه از هر کلاسی در Flutter باید با توابع آن به شکل کامل آشنا باشید.
در زیر، توضیحی اجمالی از برخی از متدهای مهم کلاس DateTime در زبان دارت آمده است:
DateTime.now()
استفاده کنید.DateTime(year, month, day, hour, minute, second, millisecond, microsecond)
استفاده کنید.toString()
استفاده کنید.format()
همراه با کلاس DateFormat استفاده کنید.در ادامه توابع مهم را به شکل عملی در زبان Dart بررسی میکنیم.
به وسیله ی این متد می تونیم زمان فعلی را دریافت کنید.
print(DateTime.now()); // 2020–04–02 13:49:46.635
البته این روش تمامی مقادیر یعنی سال و روز و… بر می گرداند اما بعضی مواقع نیاز ما به چند مورد یا یکی از آن هاست فرضا می خواهیم روز را فقط دریافت کنیم در کل برای این کار کافی است به شکل زیر عمل کنیم.
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
از این متد برای افزودن زمان به تاریخ مورد نظر ما استفاده می شود مثلا افزودن 5 روز و 5 ساعت و 30 دقیقه به تاریخ فعلی.
var addDt = DateTime.now();
print(addDt.add(Duration(days: 5, hours: 5, minutes: 30))); //2020–04–07 21:02:09.367
به وسیله ی متد 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);
این متد بررسی می کند که آیا دو تاریخ مورد نظر یکسان است یا خیر و در صورت یکسان بودن مقدار true را برمی گرداند .
print(addDt.isAtSameMomentAs(anotherDt)); // false
خوب گاهی وقت ها نیاز داریم که تاریخ مورد نظر که به صورت رشته است را به DateTime تبدیل کنیم خوب اینکار به راحتی انجام شدنی است.
String strDt = "1984–04–02";
DateTime parseDt = DateTime.parse(strDt);
print(parseDt); // 1984–04–02 00:00:00.000
و زمانی که بخواهیم عکس عمل کنیم و تاریخ مورد نظر را به رشته به صورت شخصی سازی شده وارد کنیم می تونید از پکیج 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 دریافت کنید.
گیتهاب اکشن GitHub Actions یکی از ابزارهای گیتهاب است که به شما کمک میکنه تا…
اگر یک برنامه نویس فلاتر هستید و با از نسخه وب اپلیکیشن پروژتون استفاده میکنید…
به عنوان یک برنامه نویس فلاتر یا اندروید بعد از اتمام پروسه طراحی اپلیکیشن نیاز…
طراحی رابط کاربری اپلیکیشن پادکست خود را با استفاده از این کیت توسعه UI/UX فلاتر…
فایربیس، پلتفرمی قدرتمند از شرکت گوگل برای توسعه و مدیریت برنامههای موبایل و وب است.…
فلاتر یک فریم ورک برنامه نویسی چندسکویی است که این امکان را برای برنامه نویس…
View Comments
سلام وقت بخیر
ممنون از آموزش شما
ولی جطوری میتونیم تاریخ شمسی رو توی فلاتر به تاریخ میلادی تبدیل کنیم؟
سلام
از پکیج shamsi_date میتونید استفاده کنید