Формат флаттера DateTime - PullRequest
       0

Формат флаттера DateTime

1 голос
/ 25 марта 2020

Какой тип формата даты это?

2020-03-26T00:57:08.000+08:00

Я использую DateFormat class

 DateTime dateTime = DateTime.now();

 print(dateTime.toIso8601String());
 print(dateTime.toLocal());
 print(dateTime.toUtc());

Вывод

I/flutter (20667): 2020-03-26T01:34:20.826589
I/flutter (20667): 2020-03-26 01:34:20.826589
I/flutter (20667): 2020-03-25 17:34:20.826589Z

I хотел бы иметь формат даты как первый вывод, который я показываю, который имеет +08: 00 позади. Что я должен использовать?

Ответы [ 2 ]

1 голос
/ 28 марта 2020

На данный момент нет прямого способа получить такой формат даты. Есть обходной путь.

  • Добавьте intl пакет
  • , импортируйте его в свой файл, используя import 'package:intl/intl.dart';
  • Напишите следующее код:

var dateTime = DateTime.now();
var val      = DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(dateTime);
// There is no timezone data associated with DateTime, so you have to use the following code to get the timezone info
var offset   = dateTime.timeZoneOffset;
var hours    = offset.inHours > 0 ? offset.inHours : 1; // For fixing divide by zero error
if (!offset.isNegative) {
  val = val + "+" + offset.inHours.toString().padLeft(2, '0') + ":" + (offset.inMinutes%(hours*60)).toString().padLeft(2, '0');
} else {
  val = val + offset.inHours.toString().padLeft(2, '0') + ":" + (offset.inMinutes%(hours*60)).toString().padLeft(2, '0');
}
print(val);
0 голосов
/ 25 марта 2020

Какой формат даты это?

Этот формат - UT C + смещение часового пояса.

То, что +08: 00 - смещение часового пояса это уже было добавлено.

Похоже, DateTime не содержит информацию о часовом поясе, поэтому вы не можете создать DateTime в указанном c часовом поясе. Доступны только часовой пояс вашей системы и UT C.

Важно также отметить, что DateTime поддерживает смещение часового пояса для анализа, но нормализует его до UT C или местного времени.

Так что, поскольку это UT C, вы, вероятно, можете отформатировать его, используя toUtc или toLocal, и получатель сможет его проанализировать.

С учетом сказанного вы можете просто разобрать это так:

DateTime.parse("2020-03-26T00:57:08.000+08:00")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...