2013-07-04 9 views
0

У меня есть журнал в TIMEFORMATВремя новообращенный временной метки

31/Mar/2013: 17: 03: 30 -0700

Я хочу, чтобы преобразовать его в метку времени здесь -70 в часовой пояс. Как я могу это сделать?

try { 
    String time = myMap.get("timestamp"); 
    String splitTime[] = time.split("-");//input Timestamp 31/Mar/2013:17:03:30 -0700 
    Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss").parse(splitTime[0]); 
    myMap.put("timestamp", String.valueOf(new Long(date.getTime()/1000))); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Как использовать этот часовой пояс?

+0

попробуйте '' dd/MMM/yyyy: HH: mm: ss Z "', и вы можете разобрать всю строку, не разбивая ее вручную. – vikingsteve

+0

@vikingsteve - сообщение pls как ответ –

+0

Evgeniy сделал сейчас :) – vikingsteve

ответ

5

попробовать этот

Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z").parse(s); 

к сведению, что это будет только разбирать /Mar/ если ваш язык по умолчанию английский, в противном случае используйте

Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z", Locale.US).parse(s); 
+0

Добавление 'date.getTime()' даст его в 'long'. – JHS

1

Ну вы можете использовать эту информацию о часовом поясе, чтобы вычесть/добавить, что многое время на ваши даты:

String time = myMap.get("timestamp"); 
String splitTime[] = time.split("-");//input Timestamp 31/Mar/2013:17:03:30 -0700 
Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss").parse(splitTime[0]); 

long timestamp = date.getTime()/1000; ///datetime in seconds 

long timezonehour = Long.parseLong(splitTime[1].substring(0,1)); // 07 
long timezoneminutes = Long.parseLong(splitTime[1].substring(2,3)); // 00 

timezonehour += timezoneminutes/60; 

long timezone_seconds = (timezonehour/60)/60; // in seconds 

timestamp += timezone_seconds // final computed value 

Я знаю, что это выглядит уродливым, но не может помочь f urther.

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