如何从毫秒获取日期

时间:2016-05-03 09:48:36

标签: java date

大家好我有一个要求,我需要检查系统日期值的日期,但我在DB中的日期值是毫秒,所以下面是我的代码,但问题是系统日期,我得到显示月值不正确显示月值减去一个月。

    Date now = new Date();
    Long nowLong = now.getTime() / 1000;
    Integer unixTime = nowLong.intValue();

    Calendar cal;
    cal = Calendar.getInstance();
    cal.setTimeInMillis(unixTime * 1000L);

    Integer day = cal.get(Calendar.DAY_OF_MONTH);
    Integer month = cal.get(Calendar.MONTH);
    Integer hour = cal.get(Calendar.HOUR);
    Integer minute = cal.get(Calendar.MINUTE);
    String amPm = (cal.get(Calendar.AM_PM) == Calendar.PM) ? "PM" : "AM";
    Integer year = cal.get(Calendar.YEAR);

    System.out.println("day :" + day);
    System.out.println("month :" + month);
    System.out.println("hour " + hour);
    System.out.println("minute " + minute);
    System.out.println("amPm " + amPm);
    System.out.println("year " + year);

为此,输出是 日:3 月:4 小时3 第13分钟 amPm PM 2016年 但输出不正确。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:5)

在Java中,cal.get(Calendar.MONTH)返回的值为零bazed 。然后JANUARY = 0FEBRUARY = 0,...(文档here

试试这个:

Integer month = cal.get(Calendar.MONTH) + 1;

或者这个:

System.out.println("month :" + (month.intValue() + 1));

请注意,日历的创建可以更简单:

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());

答案 1 :(得分:0)

尝试使用LocalDate。在Java 8中对Date Time api进行了很多更改。你可以使用LocalDate做得更好。

LocalDate today = LocalDate.now(); //current date
today.getMonth() //getMonth as a string
today.getMonth()//getMonthValue in an int
today.getDayOfWeek() // get the date in a string format
today.getDayOfMonth() //get the date as an int.
today.getYear()//get the year