秒数怎么转时:分:秒

  先看代码,我这里只给出main方法直接跑起来看:

public static void main(String[] args)
    {
        long totalDuration = 62907;
        String audioDuration = null;
        if (totalDuration >= 0)
        {
            
            SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); // 24小时制
            
            // 1、当前系统默认时区,按时分秒格式化
            audioDuration = formatter.format(totalDuration * 1000);
            System.out.printf("当前时区: %s\n", audioDuration);
            
            System.out.printf("当前时区与格林尼治相差%s个小时\n", TimeZone.getDefault().getRawOffset() / (3600 * 1000));
            // 2、当前系统默认时区转换为GMT时区,按时分秒格式化
            audioDuration = formatter.format(totalDuration * 1000 - TimeZone.getDefault().getRawOffset());
            System.out.printf("格林尼治时区: %s\n", audioDuration);
            
            formatter = new SimpleDateFormat("hh:mm:ss"); // 12小时制
            // 当前系统默认时区转换为GMT时区,按时分秒格式化
            audioDuration = formatter.format(totalDuration * 1000 - TimeZone.getDefault().getRawOffset());
            System.out.printf("格林尼治时区: %s\n", audioDuration);
        }
        
    }

  运行结果:

当前时区: 01:28:27
当前时区与格林尼治相差8个小时
格林尼治时区: 17:28:27
格林尼治时区: 05:28:27

  可以看到,当前是中国的北京时区,62907秒转换后是凌晨1点28分27秒,而格林尼治时间晚我们8个小时,所以他们当前才下午5点。

  我们这里并不是转换日期,而是把累计起来的秒数转换为时分秒格式,直接计算很明显62907是17小时28分27秒 (直接拿62907去除3600),所以我们不能按当前时区转,也不能按12小时制转,只能按GMT时区的24小时制转。

posted on 2017-07-13 20:23  不想下火车的人  阅读(667)  评论(0编辑  收藏  举报

导航