@tihi

Google таблицы: трансформация текста в дату и время, как?

Пример текста, который надо переделать в дату и время - January 07, 2021 at 08:31PM, как этому придать такой вид: 20:31, 07.01.2020?
  • Вопрос задан
  • 1404 просмотра
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
Возможно,

=DATE(
  REGEXEXTRACT(A1,"(\d{4})"),
  SWITCH(REGEXEXTRACT(A1,"\w{3}"),"Jan",0,"Feb",1,"Mar",2,"Apr",3,"May",4,"Jun",5,"Jul",6,"Aug",7,"Sep",8,"Oct",9,"Nov",10,"Dec",11),
  REGEXEXTRACT(A1,"(\d{2}),")
)
+
TIME(
  IF(REGEXMATCH(A1,"PM"),12,0)+REGEXEXTRACT(A1,"(\d{2}):"),
  REGEXEXTRACT(A1,":(\d{2})"),
  0
)


5ffbe39783c2f860252703.png

К сожалению, всё это сильно зависит от формата строки.

Формула для массива

=ARRAYFORMULA(
  DATE(
    REGEXEXTRACT(A1:A12,"(\d{4})"),
    SWITCH(REGEXEXTRACT(A1:A12,"\w{3}"),"Jan",0,"Feb",1,"Mar",2,"Apr",3,"May",4,"Jun",5,"Jul",6,"Aug",7,"Sep",8,"Oct",9,"Nov",10,"Dec",11),
    REGEXEXTRACT(A1:A12,"(\d{2}),")
  )
  +
  TIME(
    IF(REGEXMATCH(A1:A12,"PM"),12,0)+REGEXEXTRACT(A1:A12,"(\d{2}):"),
    REGEXEXTRACT(A1:A12,":(\d{2})"),
    0
  ))


Возможно, SWITCH - не лучшая идея. Можно заменить на MATCH

=ARRAYFORMULA(
  DATE(
    REGEXEXTRACT(A2:A100;"(\d{4})");
    MATCH(REGEXEXTRACT(A2:A100;"\w{3}");{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"};0)-1;
    REGEXEXTRACT(A2:A100;"(\d{2}),")
  )
 +
  TIME(
    IF(REGEXMATCH(A2:A100;"PM");12;0)+REGEXEXTRACT(A2:A100;"(\d{2}):");
    REGEXEXTRACT(A2:A100;":(\d{2})");
    0
  )
 )
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ForestAndGarden
@ForestAndGarden
Совершенствовать среду обитания
Я «парсил» такой формат с помощью функций REGEXTRACT(), MATCH() (для замены названия месяца на его номер), RIGHT(), LEFT(), IF() (для проверки AM/PM). Так как получаемого текста в виде даты мне было достаточно, то DATEVALUE() не использовал.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы