時刻を加算する方法を調べたので、小ネタとして記事にしておきます。
結論ですが時刻を加算する方法は二つあります。
addメソッド
一つ目はDateTime
のadd
です。
コンパクトにかけるのがメリットですが、日にちの加算までしかできず、年月の加算はできません。
もししたい場合は「普通に足す」の項をご参照ください。
下記のサンプルコードのように、baseTime.add(Duration(),);
で足したい時間を加算します。
時間の繰り上げも勝手にやってくれます。(30分45秒に、20秒を足すと31分5秒となります)
void _incrementCounter() {
final baseTime = DateTime(2022, 3, 10, 9, 30, 45);
// 2022-03-10 09:30:45
printTime(baseTime);
final addTwentySec = baseTime.add(
const Duration(
seconds: 20,
),
);
// 2022-03-10 09:31:05
printTime(addTwentySec);
}
void printTime(DateTime dateTime) {
var dtFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
print(dtFormat.format(dateTime));
}
普通に足す
二つ目の方法は愚直にたす方法です。
この方法なら年と月も足せます。
またadd
と同じように、時間の繰り上げも勝手にやってくれます。(2022年3月に10ヶ月足すと2023年1月にしてくれます)
void _incrementCounter() {
final baseTime = DateTime(2022, 3, 10, 9, 30, 45);
// 2022-03-10 09:30:45
printTime(baseTime);
final addTenMonth = DateTime(
baseTime.year,
baseTime.month + 10,
baseTime.day,
baseTime.hour,
baseTime.minute,
baseTime.second,
);
// 2023-01-10 09:30:45
printTime(addTwentySec2);
}
void printTime(DateTime dateTime) {
var dtFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
print(dtFormat.format(dateTime));
}
以上、小ネタでした!!