SimpleDateFormat - 转换为其他语言环境

时间:2017-07-19 14:05:51

标签: java simpledateformat

我定义了如下格式:

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在每个区域设置中无效)

1 个答案:

答案 0 :(得分:2)

修复字符串必须在sibgle引号内:

new SimpleDateFormat("MMMM dd'\n'EEEE',' yyyy", Locale.ENGLISH)

但是\n是换行符。希望你能在那里得到它。

<强>更新

(如异常显示,Y在每个区域设置中无效):  Y在每个Locale都有效!!