2012-03-07 2 views
1

Есть ли какой-либо прямой способ конвертировать определенное количество секунд, начиная с 6 января 1980 года, в формат UTC, например, ГГГГ/ММ/ДД ЧЧ: мм: ss?Время GPS в миллисеку до формата UTC

EDIT: Вот код, рабочий:

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

+0

Аналогичный вопрос: [Библиотека представления времени GPS] (http://stackoverflow.com/q/3038229/642706). –

ответ

7

Что-то вроде:

  1. Построить Date объект (через Calendar) для 06.01.1980 00:00:00 даты
  2. вызова getTime() получить миллисекунды, поскольку EPOCH
  3. Добавьте ваши миллисекунды к этому
  4. Постройте новый объект Date с этим значением в миллисекундах.
  5. Отформатируйте однако вы хотите (например SimpleDateFormatter)
+0

Но ... если я получу секунды с 6 января 1980 года, а затем добавлю секунды с 1 января 1070 года, я буду в 2050 году более или менее. Нет? –

+0

@RomanRdgz, а - не уверен, что я понимаю ваш вопрос. EPOCH - 01.01.1970, если вы получаете миллисекунды с 06.01.1980 до EPOCH и добавляете свои * миллисекунды с 06.01.1980 *, вы сможете построить объект 'Date' с * миллисекундами с 01.01.1970 *. – Nim

+0

@RomanRdgz, я вижу, вы изменили свой вопрос - ну это не слишком сильно меняет вещи, делит и умножает на 1000 в соответствующих местах. – Nim

Смежные вопросы