【问题标题】:I want to parse String into java date object [duplicate]我想将字符串解析为java日期对象[重复]
【发布时间】:2013-11-28 06:04:53
【问题描述】:
您好,我有这种格式的日期 2013-10-31T19:00:00Z 现在我想将此日期显示为 yyyy/mm/dd 这种格式。我使用了此代码,但它给了我例外,请帮助我
String startDateString = "2013-10-31T19:00:00Z";
DateFormat df = new SimpleDateFormat("yyyy/mm/dd");
Date startDate;
try {
startDate = df.parse(startDateString);
String newDateString = df.format(startDate);
System.out.println("Date is "+newDateString);
} catch (ParseException e) {
e.printStackTrace();
}
【问题讨论】:
标签:
java
string
parsing
date
data-conversion
【解决方案1】:
试试这个
String DateStr="2013-10-31T19:00:00Z";
SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");
Date d = new SimpleDateFormat("yyyy-MM-dd").parse(DateStr);
System.out.println(sim.format(d));
输出 2013-10-31
【解决方案2】:
这是因为您专门告诉 Java 查找 4 位数的年份,后跟 2 位数的月份和 2 位数的日期。直接从文档中获取,您想要的是
"yyyy-MM-dd'T'HH:mm:ssZ"
【解决方案3】:
您可以使用SimpleDateFormat的parse方法解析您的日期,然后使用format方法以您喜欢的格式输出。
试试这个:
String startDateString = "2013-10-31T19:00:00Z";
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
DateFormat outputFormat = new SimpleDateFormat("yyyy/MM/dd");
Date date = inputFormat.parse(startDateString);
System.out.println("Date is " + outputFormat.format(date));
输出:
Date is 2013/10/31
【解决方案4】:
您需要一个单独的SimpleDateFormat 来解析日期字符串。试试这个:
String startDateString = "2013-10-31T19:00:00Z";
DateFormat originalFormat = new SimpleDateFormat("yyyy-mm-dd'T'HH:MM:SS'Z'");
DateFormat df = new SimpleDateFormat("yyyy/mm/dd");
Date startDate;
try {
startDate = originalFormat.parse(startDateString);
String newDateString = df.format(startDate);
System.out.println("Date is " + newDateString);
} catch (ParseException e) {
e.printStackTrace();
}
【解决方案5】:
您需要两个不同的DateFormat。一个用于解析日期,一个用于格式化日期。
String startDateString = "2013-10-31T19:00:00Z";
DateFormat df = new SimpleDateFormat("yyyy/mm/dd");
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:SS'Z'");
Date startDate;
try {
startDate =df1.parse(startDateString);
String newDateString = df.format(startDate);
System.out.println("Date is "+newDateString);
} catch (ParseException e) {
e.printStackTrace();
}
【解决方案6】:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateInString = "07/06/2013";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
这是一个简单的例子
【解决方案7】:
试试这个:
try {
String startDateString = "2013-10-31T19:00:00Z";
DateFormat input = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
DateFormat output = new SimpleDateFormat("yyyy/MM/dd");
Date date = input.parse(startDateString);
System.out.println("Date is " + output.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
指出您的代码中的另一个简单错误
你编码为DateFormat df = new SimpleDateFormat("yyyy/mm/dd");
这里 mm 是 minutes ,对于 month 使用 MM