ISO-8601 String to Date в ячейке Google Таблиц

17

У меня есть строка из отформатированных строк ISO-8601 в столбце моего листа. Как я могу получить листы Google, чтобы рассматривать их как Даты, чтобы я мог выполнять математику (например, разница между двумя ячейками)? Я пробовал только =Date("2015-05-27T01:15:00.000Z") , но без радости. Должен быть простой способ сделать это. Любые советы?

    
задан Bob Kuhar 27.05.2015 в 22:47
источник

3 ответа

11

Попробуйте это

=CONCATENATE(TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),1),"yyyy-mm-dd")," ",TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),2),"hh:mm:ss"))

Где A1 может быть ячейкой с форматированной строкой ISO-8601 или самой строкой.

    
ответ дан Akshin Jalilov 28.05.2015 в 08:00
источник
20

Чтобы получить фактическое значение даты, которое вы можете форматировать с использованием стандартного форматирования чисел ...

=DATEVALUE(MID(A1,1,10)) + TIMEVALUE(MID(A1,12,8))

например.

╔═══╦══════════════════════╦════════════════════╗
║   ║          A           ║          B         ║
╠═══╬══════════════════════╬════════════════════╣
║ 1 ║ 2016-02-22T05:03:21Z ║ 2/22/16 5:03:21 AM ║
╚═══╩══════════════════════╩════════════════════╝
  • Предполагает отметки времени в UTC
  • Игнорирует миллисекунды (хотя вы можете добавить достаточно легко)

Функция DATEVALUE() превращает форматированную строку даты в значение, а TIMEVALUE() делает то же самое в разы. В большинстве таблиц дат & amp; времена представлены числом, где целая часть - дни с 1 января 1900 года, а десятичная часть - это время как часть дня. Например, 11 июня 2009 года 17:30 составляет около 39975,72917.

Вышеприведенная формула анализирует часть даты и часть времени отдельно, а затем добавляет их вместе.

    
ответ дан rcoup 23.03.2016 в 12:01
источник
8

Мне было гораздо проще использовать =SUM(SPLIT(A2,"TZ"))

Отформатируйте yyyy-MM-dd HH:mm:ss.000 , чтобы снова увидеть значение даты как ISO-8601.

    
ответ дан Chris Bandy 12.05.2016 в 23:14
источник