flutter 具有自定义月份名称的DateFormat

xxhby3vn  于 2023-02-05  发布在  Flutter
关注(0)|答案(1)|浏览(129)

我有一个包含12个月份名称的列表,比如['AAA', 'BBB', ...]。实际上,它们是历史性的,所以不包含在任何典型的区域设置中。
现在,我希望将它们包含到我的DateFormat('yMMMMd')中,而不是普通名称中。我无法手动构建日期字符串

var myDateStr = myMonthName + ' ' + myDay + ', ' + myYear; // US
var myDateStr = myDay + '. ' + myMonthName + ' ' + myYear; // DE

因为我想保留所选区域设置的格式但是。日/月/年顺序随所选区域设置而变化,我想保留该区域设置。我只想替换月份名称。我想,由于不同的日期格式和语言特定的月份名称,RegExp替换或类似操作不太可能。
预期结果:

  • 对于所选的US区域设置:AAA 1st, 2022
  • 对于选定的DE区域设置:1. AAA 2022
  • 当然,必须支持所有其他语言环境格式...

你有什么想法吗?
是否可以只将自定义月份名称插入到DateFormat对象中?

mwngjboj

mwngjboj1#

我最近有个想法,似乎很管用:

var dateStr = DateFormat('yMMMMd', myLocale).format(myDate);
var monthName = DateFormat('MMMM', myLocale).format(myDate);

return dateStr.replaceFirst(monthName, 'AAA');
// or
return dateStr.replaceFirst(monthName, myHistoricalNames[myDate.month - 1]);

1.首先创建普通日期字符串以接收语言环境的日期格式。
1.计算另一个日期字符串,它只包含地区的月份名称。现在我知道了在dateStr中无论我选择哪种语言都需要替换的字符串。
1.将月份名称替换为我的自定义月份名称。

相关问题