Ami*_*rai 3 java date date-format
private String setDate(int day) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DATE, + day);
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
String formattedDate = df.format(cal.getTime());
return formattedDate;
}
Run Code Online (Sandbox Code Playgroud)
上述方法返回"14/06/12" Locale.UK
和"06/14/12" Locale.US
.
我怎样才能让它全年返回,即"14/06/2012"为美国语言环境,"06/14/2012"为英国语言环境?
JHS的答案几近完成.唯一需要做的就是让它适用于所有语言环境.
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Locale;
class ChangeDateFormat
{
private String setDate(int day, Locale locale) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, +day);
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
if (df instanceof SimpleDateFormat)
{
SimpleDateFormat sdf = (SimpleDateFormat) df;
// To show Locale specific short date expression with full year
String pattern = sdf.toPattern().replaceAll("y+","yyyy");
sdf.applyPattern(pattern);
return sdf.format(cal.getTime());
}
String formattedDate = df.format(cal.getTime());
return formattedDate;
}
public static void main(String[] args)
{
ChangeDateFormat cdf = new ChangeDateFormat();
System.out.println(cdf.setDate(1, Locale.JAPAN));
}
}
Run Code Online (Sandbox Code Playgroud)
遵循Greg的评论(感谢Greg),以下是javadoc的相关说明:
"如果你想要更多地控制格式或解析,(或者想要给你的用户更多的控制权),你可以尝试将DateFormat
你从工厂方法中获得的东西转换成a SimpleDateFormat
.这对大多数国家都有效;只记得把它放在一个try
区块,以防你遇到一个不寻常的."
归档时间: |
|
查看次数: |
1904 次 |
最近记录: |