Сравнение только дат DateTimes в Dart - PullRequest
0 голосов
/ 25 октября 2018

Мне нужно хранить и сравнивать даты (без времени) в моем приложении, не заботясь о часовых поясах.
Я вижу три решения этого вопроса:

  1. (date1.year == date2.year && date1.month == date2.month && date1.day == date2.day)
    Это то, что я делаю сейчас, но это ужасно многословно.

  2. date1.format("YYYYMMDD") == date2.format("YYYYMMDD")
    Это все еще довольно многословно (хотя и не так плохо), но просто кажетсянеэффективно для меня ...

  3. Создайте новый класс Date самостоятельно, возможно, сохранив дату в виде строки "ГГГГММДД" или числа дней с 1 января 1980 года. Но это означает повторноереализация целой связки сложной логики, такой как разная длина месяца, сложение / вычитание и високосные годы.

Создание нового класса также позволяет избежать крайнего случая, о котором я беспокоюсь, когда добавление Duration(days: 1) заканчивается той же датой из-за изменения летнего времени.Но в этом методе, вероятно, есть крайние случаи, о которых я не думаю ...

Какое из этих решений является лучшим или есть еще лучшее решение, о котором я не думал?

Ответы [ 4 ]

0 голосов
/ 03 июля 2019

Если вы хотите вычислить разницу простым способом, не учитывая часовой пояс или час дня, а только день, как в календаре, это одно решение

  DateTime date = DateTime.fromMicrosecondsSinceEpoch(1562022000);
  print(DateTime.now().day - date.day);

Результат равен 2;

0 голосов
/ 12 ноября 2018

Вы можете использовать разница :

int diffDays = date1.difference(date2).inDays;
bool isSame = (diffDays == 0);
0 голосов
/ 13 ноября 2018

В итоге я использовал этот пакет Dart , который в основном является вариантом 3.

0 голосов
/ 25 октября 2018

Вы можете использовать Сравнить с :

  var temp = DateTime.now().toUtc();
  var d1 = DateTime.utc(temp.year,temp.month,temp.day);
  var d2 = DateTime.utc(2018,10,25);     //you can add today's date here
  if(d2.compareTo(d1)==0){
    print('true');
  }else{
    print('false');
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...