زبان دارت Dart

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

استفاده از تاریخ در خیلی موارد در اپلیکیشن ها استفاده می شود در زبان دارت هم مانند سایر زبان ها با استفاده از DateTime تاریخ گنجانده شده و می تونید خیلی راحت ازش استفاده کنید.

در به کار گیری تاریخ از کلاس DateTime استفاده میکنیم که تک تک متد های آن را بهتون آموزش می دهم.

آموزش استفاده از تاریخ در زبان دارت و فلاتر

کلاس DateTime در زبان دارت (Dart) یک کلاس پیش فرض برای مدیریت و عملیات مرتبط با تاریخ و زمان است. این کلاس امکاناتی را فراهم می‌کند که به شما اجازه می‌دهد با تاریخ، زمان، و هر دو همزمان کار کنید.

با استفاده از این کلاس، شما می‌توانید تاریخ‌ها و زمان‌ها را ایجاد کنید، آنها را فرمت بدهید، به عملیات جبری بپردازید و تفاوت بین زمان‌ها و تاریخ‌ها را محاسبه کنید.

برای استفاده از کلاس DateTime در زبان دارت، ابتدا باید کتابخانه مربوطه را import کنید. این کتابخانه به صورت پیش فرض در زبان دارت موجود است، بنابراین نیازی به نصب کتابخانه اضافی ندارید.

متدهای کلاس DateTime

برای استفاه از هر کلاسی در Flutter باید با توابع آن به شکل کامل آشنا باشید.

در زیر، توضیحی اجمالی از برخی از متد‌های مهم کلاس DateTime در زبان دارت آمده است:

  1. ساخت نمونه DateTime:
    • برای ساخت نمونه DateTime با تاریخ و زمان فعلی، می‌توانید از متد DateTime.now() استفاده کنید.
    • برای ساخت نمونه DateTime با تاریخ و زمان خاص، می‌توانید از متد DateTime(year, month, day, hour, minute, second, millisecond, microsecond) استفاده کنید.
  2. عملیات فرمت‌بندی:
    • برای فرمت بندی نمونه DateTime به رشته، می‌توانید از متد toString() استفاده کنید.
    • برای فرمت بندی نمونه DateTime به شکل سفارشی، می‌توانید از متد format() همراه با کلاس DateFormat استفاده کنید.
  3. عملیات جبری:
    • می‌توانید دو نمونه DateTime را با هم جمع یا تفریق کنید.
    • می‌توانید یک بازه زمانی (Duration) را به یک نمونه DateTime اضافه کنید یا از آن کم کنید.
  4. محاسبه تفاوت زمانی:
    • می‌توانید تفاوت بین دو نمونه DateTime را به صورت زمان یا بازه زمانی (Duration) محاسبه کنید.

در ادامه توابع مهم را به شکل عملی در زبان Dart بررسی میکنیم.

متد Now زبان دارت

به وسیله ی این متد می تونیم زمان فعلی را دریافت کنید.

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

متد Add

از این متد برای افزودن زمان به تاریخ مورد نظر ما استفاده می شود مثلا افزودن 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 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–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 دریافت کنید.

پژمان

یک قطره از دریای بیکران فلاتر عاشق یادگیری به خصوص در حوزه برنامه نویسی

View Comments

  • سلام وقت بخیر
    ممنون از آموزش شما
    ولی جطوری میتونیم تاریخ شمسی رو توی فلاتر به تاریخ میلادی تبدیل کنیم؟

Recent Posts

گیتهاب اکشن چیست؟ آموزش استفاده از گیتهاب اکشن در برنامه نویسی فلاتر

گیتهاب اکشن GitHub Actions یکی از ابزارهای گیتهاب است که به شما کمک می‌کنه تا…

2 هفته ago

آموزش افزایش سرعت اجرای وب اپلیکیشن های فلاتر

اگر یک برنامه نویس فلاتر هستید و با از نسخه وب اپلیکیشن پروژتون استفاده میکنید…

1 ماه ago

آموزش جامع انتشار اپلیکیشن اندروید و فلاتر در فروشگاه گوگل پلی Google play

به عنوان یک برنامه نویس فلاتر یا اندروید بعد از اتمام پروسه طراحی اپلیکیشن نیاز…

2 ماه ago

دانلود سورس کد رابط کاربری اپلیکیشن فلاتر پروژه پادکست

طراحی رابط کاربری اپلیکیشن پادکست خود را با استفاده از این کیت توسعه UI/UX فلاتر…

3 ماه ago

فایربیس چیست؟ معرفی سرویس ابری Firebase و کاربردهای آن

فایربیس، پلتفرمی قدرتمند از شرکت گوگل برای توسعه و مدیریت برنامه‌های موبایل و وب است.…

3 ماه ago

آموزش پیاده سازی Method Channel در فلاتر + فیلم

فلاتر یک فریم ورک برنامه نویسی چندسکویی است که این امکان را برای برنامه نویس…

3 ماه ago