我定义了如下格式:
sdf = new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault())
现在我在某些设备上遇到例外情况:
java.lang.IllegalArgumentException: Unknown pattern character 'Y'
问题是,本地设备不支持Y
。所以我必须将格式更改为以下内容:
// the string format is formatted in english, so we pass in Locale.ENGLISH
new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.ENGLISH)
问题
我现在如何使用此SimpleDateFormat
以区域设置语言打印日期?我希望EEEE
是德语,英语,西班牙语或其他什么。所以我需要使用英文格式字符串,然后用本地语言打印格式化的字符串。我怎么能这样做?
示例
SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault());
Date d = new Date();
String formatted = sdf.format(d);
预期
DE: Juli 2017\nMittwoch, 2017
EN: July 2017\nWednesday, 2017
想法
使用当前本地SimpleDateFormat
创建new SimpleDateFormat("MMMM dd\nEEEE, YYYY", Locale.getDefault());
,但现在我无法确定传入构造函数的字符串是否对当前语言环境有效...(如异常显示, Y
在每个区域设置中无效)
答案 0 :(得分:2)
修复字符串必须在sibgle引号内:
new SimpleDateFormat("MMMM dd'\n'EEEE',' yyyy", Locale.ENGLISH)
但是\n
是换行符。希望你能在那里得到它。
<强>更新强>
(如异常显示,Y在每个区域设置中无效): Y在每个Locale都有效!!