Date 您如何将一个月中的某一天格式化为“;第十一届”“;21世纪&x201D;或“;第23届&x201D;用飞镖?
我有一个日期,希望显示带有后缀th、st、rd等的日期 这是我的飞镖密码Date 您如何将一个月中的某一天格式化为“;第十一届”“;21世纪&x201D;或“;第23届&x201D;用飞镖?,date,internationalization,dart,Date,Internationalization,Dart,我有一个日期,希望显示带有后缀th、st、rd等的日期 这是我的飞镖密码 int year=date.year; int month=date.month; int day=date.day; DateTime dateSelected=新日期时间(年、月、日); var formatter=新的日期格式(“EEEE MMMM dd,yyyy”); displayDate=formatter.format(已选择日期); 例如,它将日期显示为“2014年4月23日星期三”,但我需要“2014年
int year=date.year;
int month=date.month;
int day=date.day;
DateTime dateSelected=新日期时间(年、月、日);
var formatter=新的日期格式(“EEEE MMMM dd,yyyy”);
displayDate=formatter.format(已选择日期);
例如,它将日期显示为“2014年4月23日星期三”,但我需要“2014年4月23日星期三”
我正在使用intl软件包
导入“包:intl/intl.dart” 我认为这方面没有内置功能。您可以这样设置日期格式:
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);
}
格式(日期时间日期){
var后缀=“th”;
var数字=日期。日期%10;
如果((数字>0&&digit<4)和(&&date.day<11 | | date.day>13)){
后缀=[“st”,“nd”,“rd”][数字-1];
}
返回新的日期格式(“EEEE MMMM d'$suffix',yyyy”)。格式(日期);
}
注意:如果您不想显式使用“01”一个d
就足够了。试试这个软件包,灵感来自于
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';
}
}
只需添加do
date模式即可。见下文
Jiffy([2014, 4, 23]).format("EEEE MMMM do, yyyy"); // Wednesday April 23rd, 2014
您还可以添加DateTime对象
Jiffy(DateTime(2014, 4, 23)).format("EEEE MMMM do, yyyy"); // Wednesday April 23rd, 2014
也许它是intlx软件包的一部分,但我不知道这是否只需要出现在英语国家,我建议Java使用类似的答案记住,并非总是需要这样写
写1月1日,但写“1月1日”。写11月12日,但写“11月12日”将“th,nd,rd”和“st”与数字一起使用的唯一时间是与序号一起使用。