#flutter #days #weekday #intl #flutter-intl
#флаттер #дни #день недели #intl #flutter-intl
Вопрос:
с понедельника по четверг я получаю правильные дни, но с пятницы я получаю неправильные дни. Почему?
Пример кода:
Text(DateFormat('EEEE').format(DateTime(DateTime.friday))),
И я получаю субботу. Это ошибка?
Ответ №1:
Это не ошибка, DateTime()
конструктор по умолчанию принимает year
в качестве первого аргумента:
DateTime(int year,
[int month = 1,
int day = 1,
int hour = 0,
int minute = 0,
int second = 0,
int millisecond = 0,
int microsecond = 0])
: this._internal(year, month, day, hour, minute, second, millisecond,
microsecond, false);
Итак, этот код:
DateTime date = DateTime(DateTime.friday);
По сути, это построение a DateTime
года 5, потому DateTime.friday
что это не что иное, как a const int
, равное 5:
static const int monday = 1;
static const int tuesday = 2;
static const int wednesday = 3;
static const int thursday = 4;
static const int friday = 5;
static const int saturday = 6;
static const int sunday = 7;
static const int daysPerWeek = 7;
Форматирование с DateFormat
возвратом субботы, которая является первым днем года:
import 'dart:core';
import 'package:intl/intl.dart';
main() {
DateTime date = DateTime(DateTime.friday); // creates a DateTime of the year 5
print(date.year); // year: 5
print(date.month); // month: Jan (default = 1)
print(date.weekday); // day: Saturday (first day of the year)
print("${date.year}-${date.month}-${date.day}"); // 5-1-1
}
DateTime
должен использоваться для определения конкретной даты и времени, например, пятница, 11 декабря 2020 года, его нельзя использовать для определения какой-либо пятницы.