解析日期显示错误的日期

时间:2018-10-12 08:03:32

标签: java date simpledateformat

我正在尝试将下面的字符串解析为日期,但日期显示错误

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

请提出建议

5 个答案:

答案 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"

  • MM>月
  • mm>分钟

答案 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