日期为Wed Jun 21 14:14:23 GMT+08:00 2017
,我想将其转换为2017-06-21
。
这是我的代码:
String date = "Wed Jun 21 14:14:23 GMT+08:00 2017";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMMM dd HH:mm:ss 'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
SimpleDateFormat outputDate = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
d = sdf.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
首先,我建议您停止使用旧的Date
和SimpleDateFormat
类。它们已过时,full of bugs and design issues,并被新的日期/时间API取代。
如果您使用的是 Java 8 ,请考虑使用new java.time API。
如果您使用的是 Java< = 7 ,则可以使用ThreeTen Backport,这是Java 8新日期/时间类的绝佳后端。对于 Android ,有ThreeTenABP(更多关于如何使用它here)。
以下代码适用于两者。
唯一的区别是包名称(在Java 8中为java.time
,在ThreeTen Backport(或Android的ThreeTenABP)中为org.threeten.bp
),但类和方法名称是相同的
要解析所需的String
,只需创建DateTimeFormatter
并将java.util.Locale
设置为英语,以确保工作日和月份名称(在您的情况下为Wed
}和Jun
)被正确解析。如果未设置区域设置,将使用系统的默认值(如果默认值不是英语,则不起作用)。
String date = "Wed Jun 21 14:14:23 GMT+08:00 2017";
// create formatter (using English locale to make sure weekdays and month names are parsed correctly)
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
// parse local date
LocalDate dt = LocalDate.parse(date, fmt);
System.out.println(dt.toString()); // 2017-06-21
输出结果为:
2017年6月21日
答案 1 :(得分:0)
试试这个完美的作品
String formatDate = "Wed Jun 21 14:14:23 GMT+08:00 2017";
java.text.SimpleDateFormat dateTimeFormat = new java.text.SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy" , Locale.ENGLISH);
java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);
Date date = null;
try {
date = dateTimeFormat.parse(formatDate);
} catch (ParseException e) {
e.printStackTrace();
}
String format = dateFormat.format(date);
Log.d("===========>>>>>",format);
答案 2 :(得分:0)
试试这个,它可以随心所欲地工作。
String input_date = "Wed Jun 21 14:14:23 GMT+08:00 2017";
SimpleDateFormat fromthis = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
SimpleDateFormat tothis = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = null;
try {
date = fromthis.parse(input_date);
} catch (ParseException e) {
e.printStackTrace();
}
String result = tothis.format(date);
System.out.println(result);
输入:Wed Jun 21 14:14:23 GMT + 08:00 2017
输出:2017-06-21
谢谢。