2016-10-27 7 views
-3

Я следующее Дата Строка:Формат даты для отметки времени?

1477547160000 + 0800

Есть ли формат даты для отметки времени?

AFAIK, нет формата даты для разбора метки времени, как в here

+0

Число слева - миллисекунды эпохи (как в 'System.currentTimeMillis()'). Номер справа указывает часовой пояс. – SJuan76

+0

Как форматируется строка? Эти миллисекунды с 1970 года? Как интерпретировать часовой пояс? – Henry

+0

Я получаю это от ответа, таким образом, я хочу знать, есть ли «yyyy mm dd» для синтаксического анализа этой строки. AFAIK, там нет, но downvoted LOL – Rendy

ответ

0

Если предположить, что число перед + является эпохами миллисекунды, а число после + является смещением часового пояса, вы можете попробовать это:

String input = "1477547160000+0800"; 
long epoch = Long.parseLong(input.substring(0, input.length() - 5)); 
int offset = Integer.parseInt(input.substring(input.length() - 5)); 
int offsetHour = offset/100; 
int offsetMin = offset % 100; 

OffsetDateTime t = Instant 
    .ofEpochMilli(epoch) 
    .atOffset(ZoneOffset.ofHoursMinutes(offsetHour, offsetMin)); 

Теперь у вас есть OffsetDateTime экземпляр, и вы можете конвертировать его в String любого формата. Значение по умолчанию:

t.toString() => "2016-10-27T13:46+08:00" 

Если вы хотите определенный формат, вы можете использовать DateTimeFormatter.

t.format(new DateTimeFormatter(your_format_here));