带有日期和月份的Java printf
System.out.printf("Time: %d-%d %02d:%02d" + calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE);
这是朋友给我看的代码,但是如何让日期以11月1日的格式显示?
这是怎么做的:
DateFormat dateFormat = new SimpleDateFormat( "MMMMM d" ); Calendar calendar = new GregorianCalendar(); // The date you want to format Date dateToFormat = calendar.getTime(); String formattedDate = dateFormat.format( dateToFormat ); System.out.println( formattedDate );
Date d = new Date(); System.out.printf("%s %tB %
- 特定于区域设置的完整月份名称的%tB ,例如“1月”,“2月”。
- %
d表示日期,格式为两位数,必要时带前导零, <用于重复使用最后一个参数。
DateFormat
答案是这样做的方法。 printf
答案也很好,虽然不提供特定于语言环境的格式(它提供特定于语言的名称,但不使用例如当前语言环境使用的日/月/年排序)。
你在评论中问道:
我可以使用calendar.get(Calendar.MONTH)等方法吗? 或者我必须使用日期格式?
您不必在此处使用其他方法,但如果您要使用Calender
字段,则可以将它们提供的数值转换为“星期二”或“十一月”等字符串。 为此,您可以使用内置的DateFormatSymbols
,它以String
数组的forms提供日期数字的国际化字符串,您可以使用Calendar
字段索引到。 请参阅如何在Java中将整数转换为本地化月份名称? 例如。
请注意,您可以使用DateFormat.getDateInstance()
来检索当前区域设置的预制格式(请参阅其他文档,还有获取预制时间或日期+时间格式的方法)。
基本上你有以下选择:
-
DateFormat
(自定义格式的SimpleDateFormat
)
- 特定于区域设置的格式(例如,日/月/年订购):是
- 特定语言的名称(例如英语“November”与西class牙语“Noviembre”):是的
- 适合你的工作:是的。 这是最好的方式,它将提供用户习惯使用的格式,而不需要您的逻辑。
-
printf
日期字段
- 特定于区域设置的格式:否
- 特定语言的名称:是的
- 适合您的工作:部分(由您决定现场订购)
-
DateFormatSymbols
Calendar
字段
- 特定于区域设置的格式:否
- 特定语言的名称:是的
- 适合你的工作:不
- 具有您自己的字符串转换的
Calendar
字段(如大switch
语句):
- 特定于区域设置的格式:否
- 特定语言的名称:没有
- 适合你的工作:不
基于DateFormat
的格式与printf
日期字段的另一个优点是你仍然可以使用SimpleDateFormat
定义自己的字段排序和格式(就像printf
一样),但是你可以坚持使用DateFormat
接口,这样可以更容易地传递并与库存日期相结合格式如DateFormat.getDateInstance(DateFormat.MEDIUM)
。
查看DateFormat
的文档,了解可以使用它执行的操作的信息。 有关创建自定义日期格式的信息,请查看SimpleDateFormat
的文档 。 如果您想要即时满足,请查看这个日期格式 ( 存档 )的好例子,以获得一些示例输出。
有一个直接的方法如何使用printf
来做,但它也是一个痛苦:
String.printf("Time: %1$td-%1$tm %1$tH:%1$tM", new Date());
它的一个问题是它使用4个格式化字符串和相同的对象,因此它需要1$
前缀来始终访问第一个参数。 另一个是我永远不会记得什么字母意味着什么(但也许这只是我)。
如果你关心,速度实际上可能是另一个问题。
这在底层类Formatter中有记录 。
我喜欢的方式是这样的
myFormatter.format("Time: [dm HH:MM]", new Date())
大括号会使我们不再重复$1
并明确争论结束的位置。
- Comparator – int无法解除引用
- 如何将“2017-04-26T20:55:00.000Z”字符串转换为java android studio中的日期
- 在android中设置imageview
- 使用身份validationcookie打开WebSocket连接
- Facebook4j API:搜索
- Webview中的Facebook身份validation
- Android 4.2上的HttpClient.execute(HttpPost)错误
- 如何在android ..中整理List ?
- android loadIcon生成outOfMemoryError
Interesting Posts