【问题标题】:How to convert getTime to seconds?如何将getTime转换为秒?
【发布时间】:2011-08-10 08:48:06
【问题描述】:

你能帮忙解决一下吗:

我定义了一个变量:

Time from_time = rs.getTime("nfrm_time");

它将读取 7:15:00 的值

如何将此类型转换为秒?

【问题讨论】:

    标签: java jdbc timestamp


    【解决方案1】:

    调用getTime获取自1970年1月1日以来的毫秒数。除以1000以秒为单位:

    long unixTime = from_time.getTime() / 1000;
    

    要获取自当前天 00:00 开始的秒数,请使用

    Calendar c = Calendar();
    c.setTime(from_time);
    long daySeconds = (c.get(Calendar.SECONDS) +
                       c.get(Calendar.MINUTES) * 60 +
                       c.get(Calendar.HOURS) * 3600);
    

    【讨论】:

    • @maas 幸运的是,将毫秒转换为秒非常简单:只需除以 1000。在已经执行此操作的代码中添加文本。
    • 它将时间转换为不正确的值。时间是 00:04:00,即 4 分钟,在转换中显示 -10560000
    • @maas 这是因为 UNIX 时间计算的是从 1970 年到现在的秒数,而不是从当天开始到现在的秒数。更新为计算一天中的秒数的解决方案。
    【解决方案2】:

    long seconds = rs.getTime("nfrm_time").getTime() / 1000

    解释如下:

    rs.getTime("nfrm_time") 返回java.sql.Time,它实际上是java.util.Date 的子类。

    java.util.Date.getTime() 以毫秒为单位返回时间,除以1000 得到秒数。

    注意:

    如果您正在寻找持续时间,

    Calendar cal = Calendar.getInstance();
    
    cal.setTime(rs.getTime("nfrm_time")); // set to the time returned by resultset
    cal.set(0, 0, 0); // reset the year, month and date fields
    
    Calendar cal2 = Calendar.getInstance();
    
    cal2.set(0, 0, 0, 0, 0, 0); // reset all the fields, including time
    
    long duration = ((cal.getTimeInMillis() - cal2.getTimeInMillis()) / 1000) + 1;
    

    【讨论】:

    • 它将时间转换为不正确的值。我的值为 00:04:00,即 4 分钟,在转换中显示 (-10560000)
    • 更新了我的答案。试试看。
    • 我试过但没有成功它显示错误---Time time1 = Time.valueOf(rs.getTime("abs_hours")); java.sql.Time 中的 valueOf(java.lang.String) 不能应用于 (java.sql.Time)
    【解决方案3】:

    试试:

    from_time.getTime() / 1000
    

    这可能会起作用:

    日期组件应设置为 1970 年 1 月 1 日的“零纪元”值,并且不应访问。

    这意味着日期部分始终是纪元日,这意味着Time 实例由自一天开始以来的毫秒数表示。

    【讨论】:

    • 它将时间转换为不正确的值。时间是 00:04:00,即 4 分钟,在转换中显示 -10560000
    • 它将时间转换为不正确的值。时间是 00:04:00,即 4 分钟,在转换中显示 -10560000
    【解决方案4】:

    java.sql.Time 继承自 java.util.Date,它有一个 getTime() 方法,它返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

    所以from_time.getTime()/1000 应该可以解决问题。

    【讨论】:

    • 它将时间转换为不正确的值。时间是 00:04:00,即 4 分钟,在转换中显示 -10560000 –
    【解决方案5】:

    更清洁的方法是 Time from_time = Math.round(rs.getTime("nfrm_time")/1000);

    【讨论】:

      【解决方案6】:

      获取毫秒数:

      long ms = from_time.getTime();
      

      【讨论】:

        猜你喜欢
        • 2019-09-05
        • 2010-10-30
        • 2017-06-19
        • 1970-01-01
        • 2015-11-14
        • 2018-05-28
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多