以毫秒为单位的UTC时间到UTC格式

问题描述:

是否有任何直接的方法将1980年1月6日开始的一定秒数转换为UTC格式,如YYYY/MM/DD HH:mm:ss?以毫秒为单位的UTC时间到UTC格式

编辑:这里是代码的工作:

private Date gpsInit; 
//... 
try{ 
     String ds = "06/01/1980"; 
     DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
     gpsInit = df.parse(ds); 
    } 
    catch(ParseException e) { 
     System.out.println("Unable to parse January 6th 1980"); 
    } 

    textField = new JFormattedTextField(format); 
    textField.setText(formatUTC(min)); 
//... 
private String formatUTC(int timeValue) { 
     long diference = timeValue + gpsInit.getTime()/1000; 
     String pattern = "yyyy/MM/dd HH:mm:ss"; 
     SimpleDateFormat utcFormat = new SimpleDateFormat(pattern); 
     Date utcNow = new Date(diference*1000); 
     return utcFormat.format(utcNow); 
    } 
+1

闰秒可能会出现问题。 – CodesInChaos 2012-03-07 09:59:57

+0

类似的问题:[GPS时间表示库](http://stackoverflow.com/q/3038229/642706)。 – 2015-09-08 05:05:31

喜欢的东西:

  1. 构建一个Date对象(通过Calendar)为06.01.1980 00:00:00日期
  2. 呼叫getTime()得到毫秒,因为EPOCH
  3. 加入价格:毫秒
  4. 用该毫秒值构造一个新的Date对象。
  5. 格式你想要的东西(SimpleDateFormatter例如)
+0

但是......如果我从1980年1月6日算起秒数,然后加上1070年1月1日以来的秒数,那么我将在2050年左右。没有? – 2012-03-07 10:06:08

+0

@RomanRdgz,呃 - 不知道我理解你的问题。 EPOCH是01.01.1970,如果你从1980年1月1日到EPOCH得到毫秒,并且自从06.01.1980 *增加*毫秒,你就可以从1970年1月1日起*构造一个*毫秒的Date对象。 – Nim 2012-03-07 10:12:52

+0

@RomanRdgz,我看到你改变了你的问题 - 它不会改变太多的东西,在适当的地方除以乘以1000。 – Nim 2012-03-07 10:14:11