Javagethours()、 getMinutes()和 getSecond()

据我所知,在 Java 中,getHours()getMinutes()getSeconds()都不推荐使用,它们被取代为 Calendar.HOUR_OF_DAYCalendar.MINUTECalendar.SECOND

这些事实上会返回那个特定时刻的时间、分钟和秒。但是,我希望从 Date 变量中检索小时和分钟。比如说,

假设从数据库检索到的时间为

time = Thu Jan 01 09:12:18 CET 1970;


int hours = time.getHours();
int minutes = time.getMinutes();
int seconds = time.getSeconds();

通过恢复小时,分钟和秒,我得到

hours = 9
minutes = 12
seconds = 18

那么,如何使用 Calendar 实现这个函数呢?虽然 getHours()已被废弃,但它仍然工作。我仍然想知道是否还有其他选择。

184443 次浏览

试试这个:

Calendar calendar = Calendar.getInstance();
calendar.setTime(yourdate);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);

编辑:

hours, minutes, seconds

以上将是小时,分钟和秒后转换 yourdate到系统时区!

对于时间差异,请注意日历的开始时间是01.01.1970,01.00,而不是00:00。如果您正在使用 java.util。日期和 java.text。SimpleDateFormat,你必须补偿1小时:

long start = System.currentTimeMillis();
long end = start + (1*3600 + 23*60 + 45) * 1000 + 678; // 1 h 23 min 45.678 s
Date timeDiff = new Date(end - start - 3600000); // compensate for 1h in millis
SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm:ss.SSS");
System.out.println("Duration: " + timeFormat.format(timeDiff));

这将印刷:

时间: 1:23:45.678

爪哇8

    System.out.println(LocalDateTime.now().getHour());       // 7
System.out.println(LocalDateTime.now().getMinute());     // 45
System.out.println(LocalDateTime.now().getSecond());     // 32

日历

System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));  // 7
System.out.println(Calendar.getInstance().get(Calendar.MINUTE));       // 45
System.out.println(Calendar.getInstance().get(Calendar.SECOND));       // 32

乔达时间

    System.out.println(new DateTime().getHourOfDay());      // 7
System.out.println(new DateTime().getMinuteOfHour());   // 45
System.out.println(new DateTime().getSecondOfMinute()); // 32

格式化了

爪哇8

    // 07:48:55.056
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
// 7:48:55
System.out.println(LocalTime.now().getHour() + ":" + LocalTime.now().getMinute() + ":" + LocalTime.now().getSecond());


// 07:48:55
System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));


// 074855
System.out.println(new SimpleDateFormat("HHmmss").format(Calendar.getInstance().getTime()));


// 07:48:55
System.out.println(new Date().toString().substring(11, 20));