我正在尝试将下面的字符串解析为日期,但日期显示错误
import java.text.SimpleDateFormat;
import java.util.Date;
public class Dateformat {
public static void main(String[] args) throws Exception {
String sDate1 = "2018-10-05T00:00:00-05:00";
Date date1 = new SimpleDateFormat("yyyy-mm-dd").parse(sDate1);
System.out.println(sDate1 + "\t" + date1);
}
}
怀疑:如果模式与输入字符串不匹配,为什么甚至可以正常工作?
第二,为什么显示日期错误?
Output : 2018-10-05T00:00:00-05:00 Fri Jan 05 00:10:00 IST 2018
请提出建议
答案 0 :(得分:5)
m是一小时的分钟数
尝试
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css">
<div id="app">
<div id="app" class="container">
<div class="has-text-centered">
<button class="button is-success" @click="showModal = true">
Покажите мне всплывашечку!
</button>
</div>
<modal title="Title of the modal" v-show="showModal" @close="showModal = false">
<div class="content">
</div>
</modal>
</div>
</div>
输出
2018-10-05T00:00:00-05:00星期五10月5日00:00:00 JST 2018
答案 1 :(得分:2)
我不知道您为什么使用Date?自Java 8起不推荐使用,并且不再使用。最好现在使用LocalDateTime,LocalDate或LocalTime。(根据用户https://stackoverflow.com/users/5772882/ole-v-v的评论进行更新)
String date = "2018-10-05T00:00:00-05:00";
OffsetDateTime result = OffsetDateTime.parse(date);
LocalDate localDate = LocalDate.from(result);
System.out.println(localDate);
答案 2 :(得分:1)
您应使用的格式为:"yyyy-MM-dd"
答案 3 :(得分:0)
切掉不需要的其余字符串是一种方法。保留所需部分的子字符串,并且Date应该可以正常工作。
import java.text.SimpleDateFormat;
import java.util.Date;
public class Dateformat {
public static void main(String[] args) throws Exception {
String sDate1 = "2018-10-05T00:00:00-05:00";
String formatedDate = sDate1.substring(0,10);
Date date1 = new SimpleDateFormat("yyyy-MM-dd").parse(formatedDate);
System.out.println(sDate1 + "\t" + date1);
}
}
FormatedDate是:2018-10-05
输出为:2018-10-05T00:00:00-05:00-UTC十月05 00:00:00 UTC 2018
答案 4 :(得分:0)
您输入的格式错误,无法解析日期!
new SimpleDateFormat("yyyy-mm-dd")
yyyy-mm-dd此处是输入格式(您正在尝试解析)。
您必须使用yyyy-MM-dd
格式。
要格式化输出,您必须编写如下代码:
class DateUtils {
private static SimpleDateFormat fromFormat = new SimpleDateFormat("yyyy-MM-dd", Locale("ru","RU"));
private static SimpleDateFormat toFormat = new SimpleDateFormat("dd MMM yyyy", Locale("ru","RU"));
public static String formatDate(String date) {
return toFormat.format(fromFormat.parse(date));
}
}
使用示例:
DateUtils.formatDate("2018-10-05T00:00:00-05:00");
结果是:
05 OCT 2018