Phi*_*hil 6 date internationalization dart
我有一个日期,想要显示带后缀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);
Run Code Online (Sandbox Code Playgroud)
例如,日期显示为“ 2014年4月23日星期三”,但我需要“ 2014年4月23日星期三”。
我正在使用intl包。
导入'package:intl / intl.dart';
Joh*_*thm 10
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';
}
}
Run Code Online (Sandbox Code Playgroud)
上述方法为您获取后缀。您可以使用字符串连接或字符串插值来组合您想要的格式。例如
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';
}
}
Run Code Online (Sandbox Code Playgroud)
我不认为有内置的功能。你可以这样格式化日期:
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);
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您不想显式地使用“01st”d就足够了。
只需简单地添加do日期模式。见下文
Jiffy([2014, 4, 23]).format("EEEE MMMM do, yyyy"); // Wednesday April 23rd, 2014
Run Code Online (Sandbox Code Playgroud)
您还可以添加您的 DateTime 对象
Jiffy(DateTime(2014, 4, 23)).format("EEEE MMMM do, yyyy"); // Wednesday April 23rd, 2014
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |