大家好我有一个要求,我需要检查系统日期值的日期,但我在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年 但输出不正确。任何人都可以帮助我。
答案 0 :(得分:5)
在Java中,cal.get(Calendar.MONTH)
返回的值为零bazed 。然后JANUARY = 0
,FEBRUARY = 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