#18 Dartで学ぶ日付と時刻の扱いの基本
Dartの日付操作は、`DateTime`という型を使って行います。この記事では、Dartにおける日付と時刻の基本的な扱い方を解説します。
DateTimeを使う
var now = DateTime.now();
print(now);
特定の日時を指定して作りたい場合は、コンストラクタに年・月・日などを渡します。
var birthday = DateTime(2000, 1, 15);
print(birthday);
日付を文字列にする
Dart単体では書式指定の機能が少ないため、`intl`という公式のパッケージがよく使われます。
import 'package:intl/intl.dart';
var formatter = DateFormat('yyyy年MM月dd日');
print(formatter.format(now));
時刻も含めて表示したい場合は、`DateFormat('yyyy-MM-dd HH:mm:ss')`のように書式パターンに時・分・秒の指定子を追加します。
文字列から日付に変換する
逆にユーザー入力などの文字列を`DateTime`に変換したい場合は、標準の`DateTime.parse`が使えます。
var date = DateTime.parse('2026-08-20');
print(date);
`parse`はISO 8601形式(`yyyy-MM-dd`など)の文字列を想定しており、それ以外の形式は`intl`パッケージの`DateFormat.parse`を使う必要があります。形式が不正な場合は`FormatException`が発生するため、外部入力を扱う場合は`try-catch`で囲むと安全です。
日付を計算する
var threeDaysLater = now.add(Duration(days: 3));
var twoHoursAgo = now.subtract(Duration(hours: 2));
`Duration`に日数・時間・分・秒などを指定することで、加算・減算どちらの計算も直感的に書けます。
2つの日時の差を求める
var diff = endDate.difference(startDate);
print(diff.inDays);
`difference`メソッドで`Duration`型の差分が得られ、`inDays`・`inHours`のようなプロパティで欲しい単位に変換できます。
Dartならではの注意点
Dart標準の`DateTime`だけでは、日本語を含む柔軟な書式指定が難しいため、実際のFlutterアプリ開発では`intl`パッケージを導入するのがほぼ前提になっています。以前の記事で触れた外部パッケージの導入方法とあわせて、早めに使い方を覚えておくとよいでしょう。また、`DateTime.now()`はデフォルトで端末のローカルタイムゾーンを基準にしますが、`DateTime.utc()`のように明示的にUTCで扱うこともできます。サーバーとのデータのやり取りでは、どちらのタイムゾーンで保存・送信しているかを常に意識しておくと、意図しない時刻のズレを防げます。
まとめ
Dartの日付操作は`DateTime`が基本で、書式指定には`intl`パッケージを使うのが一般的です。`Duration`を使った加算・減算、`difference`による差分計算、タイムゾーンの扱いもあわせて覚えておきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Dartをもっと学びたい方には「ゼロから学ぶFlutterアプリ開発」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿