У меня есть строка из отформатированных строк ISO-8601 в столбце моего листа. Как я могу получить листы Google, чтобы рассматривать их как Даты, чтобы я мог выполнять математику (например, разница между двумя ячейками)? Я пробовал просто =Date("2015-05-27T01:15:00.000Z")
, но без радости. Должен быть простой способ сделать это. Любые советы?
ISO-8601 String to Date в ячейке Google Таблицы
Ответ 1
Попробуйте это
=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 или самой строкой.
Ответ 2
Чтобы получить фактическое значение даты, которое вы можете форматировать с использованием стандартного форматирования чисел...
=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()
то же самое время. В большинстве таблиц даты и время представлены числом, где целая часть - дни с 1 января 1900 года, а десятичная часть - это время как часть дня. Например, 11 июня 2009 года 17:30 составляет около 39975,72917.
Вышеприведенная формула анализирует часть даты и часть времени отдельно, а затем добавляет их вместе.
Ответ 3
Мне было гораздо проще использовать =SUM(SPLIT(A2,"TZ"))
Формат yyyy-MM-dd HH:mm:ss.000
, чтобы снова увидеть значение даты как ISO-8601.