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));
}
}
グレッグのコメント(グレッグに感謝)に続いて、javadocからの関連するメモがあります:
「フォーマットや解析をさらに細かく制御したい場合(またはユーザーにもっと細かく制御したい場合)はDateFormat
、ファクトリメソッドから取得したメソッドをにキャストしてみてくださいSimpleDateFormat
。これはほとんどの国で機能します。覚えておいてください。try
異常なものに遭遇した場合に備えて、ブロックに入れてください。」