我按如下方式显示日期范围:
public static void main(String[] args) {
Locale.setDefault(new Locale("nl", "NL"));
DateTime d1 = new DateTime();
DateTime d2 = new DateTime().plusDays(30);
final String s1 = d1.toString(DateTimeFormat.shortDate());
final String s2 = d2.toString(DateTimeFormat.shortDate());
System.out.println(s1 + "-" + s2); // shows "4/05/12-3/06/12" for en_AU
System.out.println(s1 + "-" + s2); // shows "4-5-12-3-6-12" for nl_NL
}
对于荷兰的用户,他们看到“4-5-12-3-6-12”。这很令人困惑。
有什么方法可以显示考虑用户区域设置的日期范围?
答案 0 :(得分:5)
在本地化应用程序中,翻译人员在翻译资源包时会决定这种分离:
#foo.properties
#comment: a date range
dateRange={0,date}-{1,date}
可能会成为:
#foo_en.properties
dateRange={0,date} to {1,date}
然后可以使用MessageFormat类型处理。形式的东西:
//untested code
MessageFormat mf = new MessageFormat(formatString, locale);
//java.util.Date instances
Object[] range = {date1, date2};
String result = mf.format(range);
即使您没有提供完整翻译,此方法也可能适用于某些本地化。
答案 1 :(得分:1)
也许使用省略号(...)而不是短划线?
答案 2 :(得分:1)
至少在值周围使用更多空间:
"4-5-12 - 3-6-12"
年份的4位数字,afaik,在每个地区都可以理解:
"4-5-2012 - 3-6-2012"
固定数字的数字可能是你的口味,也可能不是你的口味:
"04-05-2012 - 03-06-2012"
从第2版到第3版我没有看到太多改进,但到第2版,有。我们所有人都经常接触小号而不是大号码,而且数量较少。 11,12和13经常穿过你的方式,但如果你看到2011年,2012年和2013年,那么几年后,大多数都是在约会。
答案 3 :(得分:1)
您可以使用:
SimpleDateFormat sdf;
// Create new SimpleDateFormat object that returns default pattern.
sdf = new SimpleDateFormat();
String dateFormat = sdf.format(date);
System.out.println("Date by SimpleDateFormat class : " + dateFormat);
输出是:
Date by SimpleDateFormat类:6/14/08 1:15 PM