我有这样的方法:
//datetime is millisecond
public static String getStringDateFormatMonth(long datetime) {
String yearlessPattern = "yyyy年MM月";
SimpleDateFormat yearlessSDF = new SimpleDateFormat(yearlessPattern);
Date date = new Date(datetime);
String datestr = yearlessSDF.format(date);
return datestr;
}
public static String getStringDateFormat(long datetime) {
String yearlessPattern = "dd日";
SimpleDateFormat yearlessSDF = new SimpleDateFormat(yearlessPattern);
SimpleDateFormat sdfDay = new SimpleDateFormat("E", Locale.JAPAN);
Date date = new Date(datetime);
String datestr = yearlessSDF.format(date) + "(" + sdfDay.format(date) + ")";
return datestr;
}
初始化字符串a:
String a = LifelogUtil.getStringDateFormatMonth(currentDate.getTimeInMillis())
+ LifelogUtil.getStringDateFormat(currentDate.getTimeInMillis());
我得到的结果是
2015年07月19日(日)
现在我想将此日期转换回西方日期,因为此格式为“yyyy-MM-dd”,但我无法想象如何做到这一点。请帮我!谢谢!
答案 0 :(得分:2)
您给出的格式是区域日语格式,因此您可以使用默认选项。 为方便起见,请参阅此处的{j}文档http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html 试试这个
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, new Locale("ja"));
System.out.println(df.parse("2015年07月20日"));
System.out.println(df.format(new Date()));
输出应该是这样的:
Mon Jul 20 00:00:00 IST 2015
2015年07月20日
请在此处IDEONE
参考之前的想法回答答案 1 :(得分:2)
不要将Object转换为String,使用它并将其解析回来。将原始信息保留在Date对象中,并在任何需要的地方呈现输出(只读):
// use an object internally:
Date anyDate = new Date();
// can also be SimpleDateFormat, etc:
DateFormat japaneseDf = DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN);
DateFormat germanDf = DateFormat.getDateInstance(DateFormat.FULL, Locale.GERMANY);
// when you need to display it somewhere render it appropriately, not changing the data:
System.out.println(japaneseDf.format(anyDate));
System.out.println(germanDf.format(anyDate));
打印出来:
2015年7月20日 (月曜日)
Montag, 20. Juli 2015
答案 2 :(得分:0)
这应该有所帮助。
SimpleDateFormat jp= new SimpleDateFormat("yyyy年MM月dd日(E)",Locale.JAPAN); //Japan Format
SimpleDateFormat west = new SimpleDateFormat("yyyy-MM-dd"); //Western Format
try{
Date date = jp.parse(a); //convert the String to date
System.out.println(west.format(date));//format the date to Western
}catch (Exception ex){
System.out.println(ex.getMessage());
}