Câu trả lời:
Bạn có thể sử dụng intl
gói (trình cài đặt ) để định dạng ngày.
Đối với en_US
các định dạng, nó khá đơn giản:
import 'package:intl/intl.dart';
main() {
final DateTime now = DateTime.now();
final DateFormat formatter = DateFormat('yyyy-MM-dd');
final String formatted = formatter.format(now);
print(formatted); // something like 2013-04-20
}
Có nhiều lựa chọn để định dạng. Từ các tài liệu:
ICU Name Skeleton
-------- --------
DAY d
ABBR_WEEKDAY E
WEEKDAY EEEE
ABBR_STANDALONE_MONTH LLL
STANDALONE_MONTH LLLL
NUM_MONTH M
NUM_MONTH_DAY Md
NUM_MONTH_WEEKDAY_DAY MEd
ABBR_MONTH MMM
ABBR_MONTH_DAY MMMd
ABBR_MONTH_WEEKDAY_DAY MMMEd
MONTH MMMM
MONTH_DAY MMMMd
MONTH_WEEKDAY_DAY MMMMEEEEd
ABBR_QUARTER QQQ
QUARTER QQQQ
YEAR y
YEAR_NUM_MONTH yM
YEAR_NUM_MONTH_DAY yMd
YEAR_NUM_MONTH_WEEKDAY_DAY yMEd
YEAR_ABBR_MONTH yMMM
YEAR_ABBR_MONTH_DAY yMMMd
YEAR_ABBR_MONTH_WEEKDAY_DAY yMMMEd
YEAR_MONTH yMMMM
YEAR_MONTH_DAY yMMMMd
YEAR_MONTH_WEEKDAY_DAY yMMMMEEEEd
YEAR_ABBR_QUARTER yQQQ
YEAR_QUARTER yQQQQ
HOUR24 H
HOUR24_MINUTE Hm
HOUR24_MINUTE_SECOND Hms
HOUR j
HOUR_MINUTE jm
HOUR_MINUTE_SECOND jms
HOUR_MINUTE_GENERIC_TZ jmv
HOUR_MINUTE_TZ jmz
HOUR_GENERIC_TZ jv
HOUR_TZ jz
MINUTE m
MINUTE_SECOND ms
SECOND s
Đối với các en_US
ngày không , bạn cần tải rõ ràng tại miền địa phương. Xem DateFormat
tài liệu để biết thêm. Bao date_symbol_data_local.dart
gồm tất cả các định dạng cho mỗi quốc gia / ngôn ngữ, nếu bạn muốn có một cái nhìn sâu hơn.
Bạn cũng có thể chỉ định định dạng ngày như đã nêu trước đó: https://pub.dartlang.org/documentation/intl/latest/intl/DateFormat- class.html
import 'package:intl/intl.dart';
String formatDate(DateTime date) => new DateFormat("MMMM d").format(date);
Sản xuất: March 4
Nếu ai đó muốn chuyển đổi một ngày ở định dạng chuỗi sang một số định dạng chuỗi khác, trước tiên hãy sử dụng DateTime.parse ("2019-09-30") sau đó chuyển nó sang DateFormat ("mẫu ngày").
dateFormate = DateFormat("dd-MM-yyyy").format(DateTime.parse("2019-09-30"));
Tham khảo: Phi tiêu - Cách thay đổi định dạng của chuỗi ngày đơn giản trong yyyy-MM-dd thành dd-MM-yyyy
DateFormat
nhưng văn bản của bạn nóiDateTime.format()
Điều này cung cấp cho bạn ngày như trong một mạng xã hội: ["hôm nay", "ngày hôm qua", "dayoftheweek", v.v.]
void main() {
DateTime now = new DateTime(2018,6,26);
print(date(now));
}
String date(DateTime tm) {
DateTime today = new DateTime.now();
Duration oneDay = new Duration(days: 1);
Duration twoDay = new Duration(days: 2);
Duration oneWeek = new Duration(days: 7);
String month;
switch (tm.month) {
case 1:
month = "january";
break;
case 2:
month = "february";
break;
case 3:
month = "march";
break;
case 4:
month = "april";
break;
case 5:
month = "may";
break;
case 6:
month = "june";
break;
case 7:
month = "july";
break;
case 8:
month = "august";
break;
case 9:
month = "september";
break;
case 10:
month = "october";
break;
case 11:
month = "november";
break;
case 12:
month = "december";
break;
}
Duration difference = today.difference(tm);
if (difference.compareTo(oneDay) < 1) {
return "today";
} else if (difference.compareTo(twoDay) < 1) {
return "yesterday";
} else if (difference.compareTo(oneWeek) < 1) {
switch (tm.weekday) {
case 1:
return "monday";
case 2:
return "tuesday";
case 3:
return "wednesday";
case 4:
return "thursday";
case 5:
return "friday";
case 6:
return "saturday";
case 7:
return "sunday";
}
} else if (tm.year == today.year) {
return '${tm.day} $month';
} else {
return '${tm.day} $month ${tm.year}';
}
}
Có một gói date_format
dependencies:
date_format:
mã
import 'package:date_format/date_format.dart';
final formattedStr = formatDate(
yourDateTime, [dd, '.', mm, '.', yy, ' ', HH, ':', nn]);
// output example "29.03.19 07:00"
Chú ý: phút là nn
pubspec.yaml:
dependencies:
intl:
chính.dart:
import 'package:intl/intl.dart'; // for date format
import 'package:intl/date_symbol_data_local.dart'; // for other locales
void main() {
var now = DateTime.now();
print(DateFormat().format(now)); // This will return date using the default locale
print(DateFormat('yyyy-MM-dd hh:mm:ss').format(now));
print(DateFormat.yMMMMd().format(now)); // print long date
print(DateFormat.yMd().format(now)); // print short date
print(DateFormat.jms().format(now)); // print time
initializeDateFormatting('es'); // This will initialize Spanish locale
print(DateFormat.yMMMMd('es').format(now)); // print long date in Spanish format
print(DateFormat.yMd('es').format(now)); // print short date in Spanish format
print(DateFormat.jms('es').format(now)); // print time in Spanish format
}
Kết quả:
May 31, 2020 5:41:42 PM
2020-05-31 05:41:42
May 31, 2020
5/31/2020
5:41:42 PM
31 de mayo de 2020
31/5/2020
17:41:42
Trong trường hợp bạn muốn kết hợp một số định dạng ngày thành một, đây là cách chúng tôi có thể thực hiện bằng cách sử dụng intl
.
DateFormat('yMMMd').addPattern(DateFormat.HOUR24_MINUTE).format(yourDateTime))
import 'package:intl/intl.dart';
main() {
var formattedDate = new DateTime.Format('yyyy-MM-dd').DateTime.now();
print(formattedDate); // something like 2020-04-16
}
Để biết thêm chi tiết có thể tham khảo Tài liệu DateFormat
xử lý các quý hàng năm, từ chuỗi đến DateTime, tôi không tìm thấy giải pháp phù hợp nên đã thực hiện điều này:
List<String> dateAsList = 'Q1 2001'.split(' ');
DateTime dateTime = DateTime.now();
String quarter = dateAsList[0];
int year = int.parse(dateAsList[1]);
switch(quarter) {
case "Q1": dateTime = DateTime(year, 1);
break;
case "Q2": dateTime = DateTime(year, 4);
break;
case "Q3": dateTime = DateTime(year, 7);
break;
case "Q4": dateTime = DateTime(year, 10);
break;
}