#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本