我有一个日期,想要显示带有后缀th,st,rd等的日期。
这是我的飞镖码。
int year = date.year;
int month = date.month;
int day = date.day;
DateTime dateSelected = new DateTime(year, month, day);
var formatter = new DateFormat('EEEE MMMM dd, yyyy');
displayDate = formatter.format(dateSelected);
显示日期为" 2014年4月23日星期三"例如,但我需要" 2014年4月23日星期三"。
我使用的是intl包。
import' package:intl / intl.dart';
答案 0 :(得分:1)
我认为没有内置功能。您可以格式化日期:
format(DateTime date) {
var suffix = "th";
var digit = date.day % 10;
if ((digit > 0 && digit < 4) && (date.day < 11 || date.day > 13)) {
suffix = ["st", "nd", "rd"][digit - 1];
}
return new DateFormat("EEEE MMMM d'$suffix', yyyy").format(date);
}
注意:如果您不想明确&#39; 01st&#39;一个d
就足够了。
答案 1 :(得分:1)
String getDayOfMonthSuffix(int dayNum) {
if(!(dayNum >= 1 && dayNum <= 31)) {
throw Exception('Invalid day of month');
}
if(dayNum >= 11 && dayNum <= 13) {
return 'th';
}
switch(dayNum % 10) {
case 1: return 'st';
case 2: return 'nd';
case 3: return 'rd';
default: return 'th';
}
}
以上方法为您获取后缀。您可以使用字符串串联或字符串插值来组合所需的格式。例如
'$day ${getDayOfMonthSuffix(day)}'
答案 2 :(得分:1)