Java SimpleDateFormat显示不正确的日期

时间:2018-12-31 05:56:09

标签: java date datetime simpledateformat

private static final String LONG_DATE_PATTERN = "YYYY-MMM-dd hh:mm:ss a";
private static final SimpleDateFormat longDateFormat = new SimpleDateFormat(LONG_DATE_PATTERN);

    public static String formatWith12HourClock(Date date) {
        return longDateFormat.format(date);
    }

这将为日期2018-Dec-31产生2019-Dec-31 12:00:00 AM,这是不正确的。

5 个答案:

答案 0 :(得分:3)

如其他答案所述,您应该使用public Animator anim; // Update is called once per frame void Update() { horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed; if (horizontalMove > .001) { anim.SetBool("Running Right", true); anim.SetBool("Running Left", false); anim.SetBool("Chillin", false); } else if (horizontalMove < -.001) { anim.SetBool("Running Left", true); anim.SetBool("Running Right", false); anim.SetBool("Chillin", false); } else { anim.SetBool("Chillin", true); anim.SetBool("Running Left", false); anim.SetBool("Running Right", false); } 而不是yyyy。如果您正在使用Java8或更高版本,也可以使用YYYY来避免使用原始模式,例如:

DateTimeFormatterBuilder

答案 1 :(得分:2)

将YYYY更改为yyyy以获得正确的输出。 您将获得2019年,因为大写的``Y''是周年。 参考:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 日期和时间模式

答案 2 :(得分:0)

将格式格式更改为yyyy-MM-dd以获取2018-12-31

private static final String LONG_DATE_PATTERN = "yyyy-MM-dd";
private static final SimpleDateFormat longDateFormat = new SimpleDateFormat(LONG_DATE_PATTERN);

    public static String formatWith12HourClock(Date date) {
        return longDateFormat.format(date);
    } 

答案 3 :(得分:0)

这是我根据OP尝试过的内容,

public class App {
private static final String LONG_DATE_PATTERN = "yyyy-MMM-dd hh:mm:ss a";
private static final String SHORT_DATE_PATTERN = "yyyy-MMM-dd";
    private static final SimpleDateFormat longDateFormat = new SimpleDateFormat(LONG_DATE_PATTERN);
    private static final SimpleDateFormat shortDateFormat = new SimpleDateFormat(SHORT_DATE_PATTERN);

 public static void main(String[] args) throws Exception {
        Calendar cal = Calendar.getInstance();
        //Input date 2018-Dec-31 12:00:00 AM
        cal.set(2018, 11, 31, 0, 0, 0);

        Date date = cal.getTime();

        System.out.println(longDateFormat.format(date));
        System.out.println(shortDateFormat.format(date));
}
}

输出:

  

2018年12月31日上午12:00:00

     

2018年12月31日

您的简单日期格式存在问题

  • y->年
  • Y->周年

您应该在日期模式中用yyyy更改YYYY。

参考:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

答案 4 :(得分:0)

使用yyyy而不是YYYY,因为与SimpleDateFormat中的周相比,YYYY进行了转换。平均一年正好是52.1775周,这意味着考虑到不可分割的周数,一年最终可能有52周或53周。
Don't use YYYY in your date format template