我一直在使用DateFormat格式化日期,但现在我需要将语言环境的格式传递给jQuery Date小部件。我怎样才能获得格式?
更新:
为了澄清,我需要在Java中获得模式,以便我可以将其输出到其他地方。例如在某些JavaScript中我可能想要创建一个这样的字符串,其中包含日期格式:
$('#datepicker').datepicker({'dateFormat':'dd/mm/yy'})
答案 0 :(得分:4)
您可以使用
获取日期模式((SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.UK)).toPattern()
或者如果您只需要日期
((SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, Locale.UK)).toPattern()
API:SimpleDateFormat.toPattern(),DateFormat.getDateTimeInstance(),DateFormat.getDateInstance()
第二个问题是如何将其转换为jQuery特定的格式模式。
Java date formatting。 vs jQuery DatePicker Date Formatting
答案 1 :(得分:1)
我最近一直在关注这个问题,并且没有找到一种使用标准库找到它的简单方法。我需要这个来本地化Wicket类org.apache.wicket.extensions.markup.html.form.DateTextField
,它采用SimpleDateFormat模式而不是DateFormat对象。这是我最终决定使用的代码,它不依赖于JVM的实现细节,但必须解析DateFormat.format的输出特定日期(11/22/3333 - 美国格式)。 / p>
public static String simpleDateFormatForLocale(Locale locale) {
TimeZone commonTimeZone = TimeZone.getTimeZone("UTC");
Calendar c = Calendar.getInstance(commonTimeZone);
c.set(3333, Calendar.NOVEMBER, 22);
DateFormat localeDateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
localeDateFormat.setTimeZone(commonTimeZone);
String dateText = localeDateFormat.format(c.getTime());
return dateText.replace("11", "MM").replace("22", "dd").replace("3333", "yyyy").replace("33", "yyyy");
}
在我的情况下,我想强制使用yyyy
,即使格式返回两位数年份。这就是我今年两次致电replace
的原因。
以下是一些示例区域设置的输出:
en_US 11/22/33 MM/dd/yyyy
en_CA 22/11/33 dd/MM/yyyy
zh_CN 33-11-22 yyyy-MM-dd
de 22.11.33 dd.MM.yyyy
ja_JP 33/11/22 yyyy/MM/dd
如果有人可以改进,我很乐意看到他们的解决方案。