Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 您如何将一个月中的某一天格式化为“;第十一届”“;21世纪&x201D;或“;第23届&x201D;用飞镖?_Date_Internationalization_Dart - Fatal编程技术网

Date 您如何将一个月中的某一天格式化为“;第十一届”“;21世纪&x201D;或“;第23届&x201D;用飞镖?

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年

我有一个日期,希望显示带有后缀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年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”与数字一起使用的唯一时间是与序号一起使用。