【问题标题】:Java getHours(), getMinutes() and getSeconds()Java getHours()、getMinutes() 和 getSeconds()
【发布时间】:2011-12-30 07:29:58
【问题描述】:

据我所知,getHours()getMinutes()getSeconds() 在 Java 中都已弃用,它们已被 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

那么,我该如何使用日历来实现这个功能呢?尽管getHours() 已被弃用,但它仍然有效。我仍然想知道是否有替代方法。

【问题讨论】:

    标签: java date hour seconds minute


    【解决方案1】:

    试试这个:

    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 转换为系统时区后的小时、分钟和秒!

    【讨论】:

    • 另外,如果需要设置时区,添加TimeZone tz = TimeZone.getTimeZone("UTC"); // ... 初始化日历 calendar.setTimeZone(tz);
    【解决方案2】:

    Java 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
    

    格式化

    Java 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));
    

    【讨论】:

    • V 有用的纲要:这些可能是当今最常见的日期/时间系统集。
    • 但它以个位数显示小时和分钟。是否可以显示两位数
    【解决方案3】:

    对于时差,请注意日历从 01.01.1970 01:00 开始,而不是 00:00。如果您使用 java.util.Date 和 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

    【讨论】:

    • 哇。只是如何在java中进行日期操作是不可能的。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 2016-12-24
    • 2022-06-17
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多