[英]Output readable day-of-month with joda-time
我正在尝试获取jodatime
DateTime
对象以所需的格式输出。 目前,我的格式字符串为:
dt.toString("EEEE dd\nMMMM YYYY");
输出为:
Wednesday 04
June 2014
但是,我想显示带后缀的DAY
,例如:
1st
, 2nd
日, 3rd
, 4th
是否有使用jodatime进行此操作的内置方法,还是我必须为此编写自己的函数?
根据JodaTime网站( http://www.joda.org/joda-time/key_format.html )上的文档判断,似乎没有内置函数可以执行此格式。
可以在此处看到类似的问题,以获取有关如何手动进行格式化的示例- 在Java中如何格式化月份中的“ 11日”,“ 21日”或“ 23日”? (普通指示器)
DateTime dt = new DateTime();
String formatFirst = "EEEE dd'st'\nMMMM YYYY";
String formatSecond = "EEEE dd'nd'\nMMMM YYYY";
String formatThird = "EEEE dd'rd'\nMMMM YYYY";
String formatStd = "EEEE dd'th'\nMMMM YYYY";
String pattern;
switch (dt.getDayOfMonth()) {
case 1:
case 21:
case 31:
pattern = formatFirst;
break;
case 2:
case 22:
pattern = formatSecond;
break;
case 3:
case 23:
pattern = formatThird;
break;
default:
pattern = formatStd;
}
String output = dt.toString(pattern, Locale.ENGLISH);
System.out.println(output);
这是此答案的类似Kotlin版本。 这仅输出月份(包括其序数)。
fun getDayOfMonthDayWithOrdinal(date: DateTime): String {
val formatter = DateTimeFormat.forPattern("dd")
val monthDay = formatter.print(date).toInt()
return when (monthDay) {
1, 21, 31 -> "${monthDay}st"
2, 22 -> "${monthDay}nd"
3, 23 -> "${monthDay}rd"
else -> "${monthDay}th"
}
}
您将为此实现自己的DateTimeFormatterBuilder 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.