Как получить отформатированную строку даты и времени из `сейчас`? - PullRequest
1 голос
/ 09 июня 2019

Я использую «Red Programming Language» версии «0.6.4» для Windows и создаю приложение для командной строки.

Я не знаю много красного языка и не понимаю многих вещей. Перед тем как спросить здесь, я просмотрел документы по «работе в процессе» на (https://doc.red -lang.org / ru / ).

Мне нужно получить строку даты и времени в формате yyyymmdd_hhmm.

Я начал с кода, подобного этому:

Red []
dt: to string! now/year
print dt

, что дает мне 2019, но мне нужны другие вещи месяц, день и время, чтобы получить что-то вроде 20190608_2146

Я пробовал также:

Red []
dt: to string! now/precise
print dt

, что дает мне 8-Jun-2019/21:47:51.299-07:00, но опять же мне нужно было 20190608_2147

Вопрос:
Как изменить код выше, чтобы получить что-то вроде 20190608_2147 из now?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 июня 2019

Я написал скрипт для Rebol и Red под названием «Form Date», который будет форматировать даты / время аналогично STRFTIME. Красная версия - здесь .

do %form-date.red
probe form-date now "%Y%m%d_%H%M"

print first spec-of :form-date

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

Вам не нужен скрипт для вашего конкретного примера, вы можете извлечь и объединить различные компоненты следующим образом:

date: now
rejoin [ ; reduce-join
    form date/year
    pad/left/with date/month 2 #"0"
    pad/left/with date/day 2 #"0"
    "_"
    pad/left/with date/hour 2 #"0"
    pad/left/with date/minute 2 #"0"
]
2 голосов
/ 21 июня 2019

Поскольку у вышеприведенного решения есть некоторые проблемы с Rebol2, здесь вариант, который работает с Rebol и Red одинаково

date: now
rejoin [ 
    date/year
    next form 100 + date/month
    next form 100 + date/day 
    "_"
    next form 100 + date/time/hour
    next form 100 + date/time/minute 
]
...