Flutter/Dart - 날짜 계산, 년/월/일 더하고 빼기

시간 정보를 갖고 있는 DateTime 객체에 년/월/일을 더하거나 빼는 방법을 소개합니다.

1. add()로 시간 더하고

DateTime.add(Duration(time))DateTime 객체에 time을 더합니다.

인자로 전달되는 time은 아래와 같이 Duration으로 명시할 수 있습니다. 또한, 두개 이상의 시간 타입을 Duration에 명시할 수 있습니다.

  • Duration(days: ?)
  • Duration(hours: ?)
  • Duration(minutes: ?)
  • Duration(days: ?, hours: ?, minutes: ?)
void main() {

    DateTime dt = DateTime(2022, 12, 1);
    print('DateTime: $dt');

    DateTime dt2 = dt.add(Duration(days: 10));
    print(dt2);

    DateTime dt3 = dt.add(Duration(hours: 10));
    print(dt3);

    DateTime dt4 = dt.add(Duration(minutes: 10));
    print(dt4);

    DateTime dt5 = dt.add(Duration(days: 10, hours: 10, minutes: 10));
    print(dt5);
}

Output:

DateTime: 2022-12-01 00:00:00.000
2022-12-11 00:00:00.000
2022-12-01 10:00:00.000
2022-12-01 00:10:00.000
2022-12-11 10:10:00.000

2. subtract()으로 시간 빼기

subtract()add()의 반대로, 입력된 시간을 DateTime에서 뺍니다.

아래와 같이 시간을 DateTime에서 뺄 수 있습니다.

void main() {

    DateTime dt = DateTime(2022, 12, 1);
    print('DateTime: $dt');

    DateTime dt2 = dt.subtract(Duration(days: 10));
    print(dt2);

    DateTime dt3 = dt.subtract(Duration(hours: 10));
    print(dt3);

    DateTime dt4 = dt.subtract(Duration(minutes: 10));
    print(dt4);

    DateTime dt5 = dt.subtract(Duration(days: 10, hours: 10, minutes: 10));
    print(dt5);
}

Output:

DateTime: 2022-12-01 00:00:00.000
2022-11-21 00:00:00.000
2022-11-30 14:00:00.000
2022-11-30 23:50:00.000
2022-11-20 13:50:00.000

년, 월은 days를 활용하여 더하거나 빼면 됩니다.

3. timestamp로 시간 연산

timestamp는 1970년 1월 1일 부터 현재까지 경과한 시간을 millisecond로 표현한 것입니다.

아래와 같이 timestamp로 시간 연산을 할 수 있습니다.

  1. days, hours, minutes를 millisecond로 변환하여 timestamp와 연산
  2. timestamp를 다시 DateTime으로 변환
void main() {

    DateTime dt = DateTime(2022, 12, 1);
    print('DateTime: $dt');

    int timestamp = dt.millisecondsSinceEpoch;

    int days = 10;
    int hours = 10;
    int minutes = 10;

    int timestampForAdd = timestamp
            + (days * 24 * 60 * 60 * 1000)
            + (hours * 60 * 60 * 1000)
            + (minutes * 60 * 1000);
    DateTime dt2 = DateTime.fromMillisecondsSinceEpoch(timestampForAdd);
    print('DateTime for add: $dt2');


    int timestampForSubtract = timestamp
            - (days * 24 * 60 * 60 * 1000)
            - (hours * 60 * 60 * 1000)
            - (minutes * 60 * 1000);
    DateTime dt3 = DateTime.fromMillisecondsSinceEpoch(timestampForSubtract);
    print('DateTime for sub: $dt3');

}

Output:

DateTime: 2022-12-01 00:00:00.000
DateTime for add: 2022-12-11 10:10:00.000
DateTime for sub: 2022-11-20 13:50:00.000
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha