Вход | Регистрация
 

Как преобразовать строку вида "2021-03-09T17:17:54" в дату

Как преобразовать строку вида "2021-03-09T17:17:54" в дату
Я
   АртемП
 
10.03.21 - 15:27
Есть ли простой механизм ? Или пример?
Это типовой ответ сторонней программы - показывает момент времени.
Собственно строка момента времени вообще имеет вид:
     datetime="2021-03-09T17:17:54.620+03:00"

Собственно строку можно преобразовать к виду "2021-03-09 17:17:54" но наверно это не сильно поможет
   RomanYS
 
1 - 10.03.21 - 15:32
(0) XMLЗначение(Тип("Дата"),"2021-03-09T17:17:54.620+03:00")    
только сеунды округлятся до 09.03.2021 17:17:55
   AlvlSpb
 
2 - 10.03.21 - 15:32
(0) Собственно строку можно преобразовать к виду "2021-03-09 17:17:54"©
Преобразовывай, а потом СтрЗаменить меняешь дефис на точку и Дата(ТвояСтрока) получишь дату
   acht
 
3 - 10.03.21 - 15:33
(0) Результат = Дата("20210309171754")
   AlvlSpb
 
4 - 10.03.21 - 15:34
   acht
 
5 - 10.03.21 - 15:34
А хотя в (1) правильней, так еще часовой пояс учется. А вот как его понимать - пусть у ТС голова болит
   asady
 
6 - 10.03.21 - 15:35
ТвояДата = ПрочитатьДатуJSON(ДатаСтрокой, ФорматДатыJSON.ISO);
   АртемП
 
7 - 10.03.21 - 15:36
спасибо всем!
   dka80
 
8 - 10.03.21 - 15:36
СтроковыеФункцииКлиентСервер.СтрокаВДату
   acht
 
9 - 10.03.21 - 15:38
(7) Ты только еще учти, что, например, "2021-03-09T17:17:54.620+04:00" при приведении на сервере, находящемся в московском часовом поясе даст не 17:17, а 16.17 =)
   PR
 
10 - 10.03.21 - 15:40
(0) XMLЗначение(Тип("Дата"), ТвояДатаСтрокой)
   acht
 
11 - 10.03.21 - 15:41
(10) Даже до первого сообщения не дочитал, так торопился...
   PR
 
12 - 10.03.21 - 16:10
(11) А, да, че-то все прочитал, но отвлекся, а потом почему-то увидел только (6)
   НЕА123
 
13 - 10.03.21 - 17:38
Дата(СтрСоединить(стрРазделить(стрРазделить("2021-03-09T17:17:54.620+03:00",".")[0],"-T:")))
   acht
 
14 - 10.03.21 - 20:01
(13) Слабак.
ДатаСтрокой = "2021-03-09T17:17:54.620+03:00";

Запрос = Новый Запрос("
    |ВЫБРАТЬ
    |   ДОБАВИТЬКДАТЕ(
    |   ДОБАВИТЬКДАТЕ(
    |   ДОБАВИТЬКДАТЕ(
    |   ДОБАВИТЬКДАТЕ(
    |   ДОБАВИТЬКДАТЕ(
    |   ДОБАВИТЬКДАТЕ(
    |   ДАТАВРЕМЯ(3999, 1 ,1),
    |   ГОД,
    |   СУММА(
    |         1000 * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 1, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 100  * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 2, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 10   * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 3, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 1    * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 4, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |   ) - 3999
    |   ), МЕСЯЦ,
    |   СУММА(
    |         10 * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 6, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 1  * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 7, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |   ) - 1
    |   ), ДЕНЬ,
    |   СУММА(
    |         10 * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 9,  1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 1  * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 10, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |   ) - 1
    |   ), ЧАС,
    |   СУММА(
    |         10 * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 12, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 1  * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 13, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |   )
    |   ), МИНУТА,
    |   СУММА(
    |         10 * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 15, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 1  * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 16, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |   ) 
    |   ), СЕКУНДА,
    |   СУММА(
    |         10 * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 18, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |       + 1  * ЕСТЬNULL(ВЫБОР ПОДСТРОКА(&ДатаСтрокой, 19, 1) КОГДА ЦифрыЧисел.Цифра ТОГДА ЦифрыЧисел.Число КОНЕЦ, 0)
    |   )
    |   ) КАК ДатаДатой
    |ИЗ
    |(
    |   ВЫБРАТЬ ""0"" КАК Цифра, 0 КАК Число
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""1"", 1
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""2"", 2
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""3"", 3
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""4"", 4
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""5"", 5
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""6"", 6
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""7"", 7
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""8"", 8
    |   ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ""9"", 9
    |) КАК ЦифрыЧисел
    |");
Запрос.УстановитьПараметр("ДатаСтрокой", ДатаСтрокой);

ДатаДатой = Запрос.Выполнить().Выгрузить()[0].ДатаДатой;
Сообщить(ДатаДатой);

   RomanYS
 
15 - 10.03.21 - 20:12
(14) что-то слабо верится что это работает
"КОГДА ЦифрыЧисел.Цифра..." преобразование к булево где?
   acht
 
16 - 10.03.21 - 20:35
(15) Ты при помощи веры, что-ли программируешь?
Вот сейчас заодно и уровень знаний языка запросов раскроется.
   ДенисЧ
 
17 - 10.03.21 - 20:45
Весна, что-ли? У нас ещё морозы, а у вас уже обострение...
   RomanYS
 
18 - 10.03.21 - 20:57
(16) Дичь полная... но работает))
   Йохохо
 
19 - 10.03.21 - 21:50
   RomanYS
 
20 - 10.03.21 - 23:27
(19) ага, но это только половина дичи)) 
Вторая половина это группировка и сумма()
   Ненавижу 1С
 
21 - 10.03.21 - 23:54
   RomanYS
 
22 - 11.03.21 - 00:15
(21) да фиг с ним с кейсом, хотя такое раньше на 1с не видел, в доку лезть пока лень...
Применение СУММА() там гораздо интереснее с выборкой из одной таблицы цифр
   KoalaJustKoala
 
23 - 11.03.21 - 05:29
(14) Чего чего можно с запросом натворить?
Гм....
Мощненько...


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.