我目前正在从事一个项目,该项目要求我将日期从一种格式转换为另一种格式。
这是我的代码
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class testDate {
static String date = "Wed Mar 27 18:14:25 CET 2019"; // String representing received date
static final String originalFormatS = "EEE MMM dd HH:mm:ss zzz yyyy"; // Corresponding date format
static final String displayFormatS = "dd/MM/yy"; // Wanted output format
public static void main (String[] args) throws Exception {
DateFormat originalFormat = new SimpleDateFormat(originalFormatS);
DateFormat displayFormat = new SimpleDateFormat(displayFormatS);
Date parsedDate = originalFormat.parse(date);
String outputDate = displayFormat.format(parsedDate);
System.out.println(outputDate);
}
}
但是随后我得到 java.text.ParseException:无法解析的日期:“ CET 2019年3月27日星期三18:14:25”
我尝试了new Date(date);
,但它已被弃用...
有什么想法吗? 预先感谢
答案 0 :(得分:1)
您不在英国或美国,是吗?
SimpleDateFormat
需要一个区域设置才能正确解释日期/月份名称。
只需像这样创建您的SimpleDateFormat
:
DateFormat originalFormat = new SimpleDateFormat(originalFormatS, Locale.US);
为我工作...
PS:像 Ben R。”所述:考虑将java.time
用于任何基于日期/时间的数据处理。
答案 1 :(得分:1)
在创建SimpleDateFormat实例时,请指定您的语言环境。 例如,使以下构造函数正常工作
DateFormat originalFormat = new SimpleDateFormat(originalFormatS,Locale.US);
答案 2 :(得分:-1)
您可以尝试这个吗?
public class testDate {
static String date = "Wed Mar 27 18:14:25 CET 2019"; // String representing received date
static final String originalFormatS = "EEE MMM dd HH:mm:ss zzz yyyy"; // Corresponding date format
static final String displayFormatS = "dd/MM/yy"; // Wanted output format
public static void main (String[] args) throws Exception {
Date originalFormat = new SimpleDateFormat(originalFormatS).parse(date);
DateFormat displayFormat = new SimpleDateFormat(displayFormatS);
String outputDate = displayFormat.format(originalFormat);
System.out.println(outputDate);
}
}