URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10065
[ Назад ]

Исходное сообщение
"date - установка по своему формату"

Отправлено l8saerexhn1 , 08-Янв-16 23:06 
Доброго времени суток, aLL

Из элементарного, но -запутался...
Из консольного скрипта в переменную $dat получаю дату в виде "dd/mm/yyyy". Когда же устанавливаю эту дату с помощью date -s="$dat" то день и месяц меняются местами. Например, в переменную получил 08/01/2016 - 8 января, а date -s ставит 01/08/2016 - 1 августа, т.е. трактует порядок значений в переменной по-своему.
В мане пишут, что дату устанавливать надо таки в виде mm/dd/yy. А кастомный формат даты для установки не предусмотрен (по аналогии с форматированием даты при выводе)?


Содержание

Сообщения в этом обсуждении
"date - установка по своему формату"
Отправлено universite , 08-Янв-16 23:23 
> Доброго времени суток, aLL
> Из элементарного, но -запутался...

man date
в своем дистрибутиве



"date - установка по своему формату"
Отправлено l8saerexhn1 , 08-Янв-16 23:47 
> man date в своем дистрибутиве

Ну как же в треде не обойтись без "мануального терапевта"...


"date - установка по своему формату"
Отправлено Etch , 09-Янв-16 01:10 

dat="08/01/2016"; date -s $(echo $dat |sed -re '{s@([0-9]{2})\/([0-9]{2})\/@\2\/\1\/@;}');


"date - установка по своему формату"
Отправлено l8saerexhn1 , 09-Янв-16 12:54 
>
 
> dat="08/01/2016"; date -s $(echo $dat |sed -re '{s@([0-9]{2})\/([0-9]{2})\/@\2\/\1\/@;}');
>

Спасибо большое.
Т.е., выходит, что date установку даты принимает только в формате mm/dd/yy и никаком другом виде?


"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 09-Янв-16 15:42 
> Т.е., выходит, что date установку даты принимает только в формате mm/dd/yy и
> никаком другом виде?

Пациент, вернитесь к терапии.

https://www.gnu.org/software/coreutils/manual/html_node/Date...
https://www.gnu.org/software/coreutils/manual/html_node/Exam...


"date - установка по своему формату"
Отправлено l8saerexhn1 , 09-Янв-16 16:15 
> Пациент, вернитесь к терапии.
> https://www.gnu.org/software/coreutils/manual/html_node/Date...
> https://www.gnu.org/software/coreutils/manual/html_node/Exam...

Лекарь, для начала прочитайте внимательно вопрос. И, если вас не затруднит, на конкретном, выше приведенном примере, покажите, как и что не так у пациента и как нужно сделать.

Повторю еще раз: в переменной получаю значение "dd/mm/yy" (dialog --calendar ...) нужно скормить это date для установки системной даты. date понимает эту строку как US-формат и меняет местами день и месяц. И нет возможности явно указать, что где чем является (или я тугой не вижу элементарного). И нужно парсить строку, по типу как выше уважаемый Etch привел пример?


"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 09-Янв-16 16:58 
>> Пациент, вернитесь к терапии.
>> https://www.gnu.org/software/coreutils/manual/html_node/Date...
>> https://www.gnu.org/software/coreutils/manual/html_node/Exam...
>для начала прочитайте внимательно вопрос.

"Т.е., выходит, что date установку даты принимает только в формате mm/dd/yy и никаком другом виде?"

Ответы на *этот* вопрос по ссылкам. Другие Ваши симптомы будут рассмотрены симпозиумом. ...коллеги?

> Повторю еще раз: в переменной получаю значение "dd/mm/yy" (dialog --calendar ...) нужно

иди. от.

       --date-format format
              If the host provides strftime, this option allows you to specify
              the format of the date printed for the --calendar  widget.   The
              time of day (hour, minute, second) are the current local time.


"date - установка по своему формату"
Отправлено l8saerexhn1 , 09-Янв-16 17:41 
За --date-format format спасибо, онлайн-дока, что смотрел ( http://linux.die.net/man/1/dialog ) как-то про эту опцию забыла. Это - решение.
Тем не менее, с date не ясно. Так, себе на будущее. Как правильно скормить date строку вида "dd/mm/yy" (строка, разделенная слешами) так, чтобы date не интерпретировал это как US-формат даты и не "переставлял местами" день и месяц.
Просто пример.

"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 09-Янв-16 18:49 
> Тем не менее, с date не ясно. Так, себе на будущее. Как

Да, это https://www.gnu.org/software/coreutils/manual/html_node/Cale... таааак непонятно. Да-да-да.

> правильно скормить date строку вида "dd/mm/yy" (строка, разделенная слешами) так, чтобы
> date не интерпретировал это как US-формат даты и не "переставлял местами"
> день и месяц.

Я не знаю. Ну-ну, не плачь.  ...  Решение с sed-ом дали. Попробуй поставить _японскую_ локаль для одного вызова.  Нет, я не скажу как  --  меня больше интересует "но зачееем??".

> Просто пример.


"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 09-Янв-16 18:53 
>>> Пациент, вернитесь к терапии.
> Ваши симптомы будут рассмотрены симпозиумом. ...коллеги?

"консилиум", агкхр, прошу пардона.

>> Повторю еще
> иди.


"date - установка по своему формату"
Отправлено l8saerexhn1 , 09-Янв-16 23:55 
Если все так просто - ну напиши одну (!) команду, как правильно надо сделать, и все.
Ну не понимаю, не троллю, не издеваюсь, "залип" - объяснить простым примером не судьба? Одна строка. Одна команда.
Если не знаешь, если лень писать - пройди мимо.
Нет же, надо обязательно набросить на вентилятор... Попросил помощи...
Грустно от таких "знатоков".


"date - установка по своему формату"
Отправлено михалыч , 11-Янв-16 18:08 
> Если все так просто - ну напиши одну (!) команду, как правильно
> надо сделать, и все.
> Ну не понимаю, не троллю, не издеваюсь, "залип" - объяснить простым примером
> не судьба? Одна строка. Одна команда.
> Если не знаешь, если лень писать - пройди мимо.
> Нет же, надо обязательно набросить на вентилятор... Попросил помощи...
> Грустно от таких "знатоков".

он знает и ему не лень.
линки дал, на sed ещё раз указал

ну ты чего?

ладно, лови на авке


#!/bin/sh

dat="08/01/2016"
dat="$(echo $dat | awk -F / '{print $2"/"$1"/"$3}')"
date -s "$dat"

не грусти ))


"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 11-Янв-16 18:14 
>> Грустно от таких "знатоков".
> он знает и ему не лень.
> линки дал, на sed ещё раз указал

"Он" также подозревает севшего лужу г-на в некоторой неискренности из-за нарочитого нажима на "одной командой", когда у самого уже две по минимуму(dialog|date -s). А уж не осилил чуть дальше написанного и/или позёрствует-отмазывается -- без разницы. </препод прэ>


"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 11-Янв-16 18:34 
> #!/bin/sh
> dat="08/01/2016"
> dat="$(echo $dat | awk -F / '{print $2"/"$1"/"$3}')"

dat="$(bash -c 'IFS=/ <<<"'"$dat"'" read a b c?; echo "$b/$a/$c"')"

Не короче, зато ручная работа, специально для шебанг-бин-ш-шеллеров. %)

> не грусти ))

PS: Х-хех!
dat="$(sh -c 'a="'"$dat"'"; b="${a%/*}"; echo "${b#*/}/${b%/*}${a#$b}"')"
dat="$(b="${dat%/*}"; echo "${b#*/}/${b%/*}${dat#$b}")"

PPS: За переносимость/вездеходность не ручаюсь. +За локальность перемненной b в субшеле. На /bin/sh -> dash прокатило.



"date - установка по своему формату"
Отправлено михалыч , 11-Янв-16 18:43 
>[оверквотинг удален]
>> dat="08/01/2016"
>> dat="$(echo $dat | awk -F / '{print $2"/"$1"/"$3}')"
> dat="$(bash -c 'IFS=/ <<<"'"$dat"'" read a b c?; echo "$b/$a/$c"')"
> Не короче, зато ручная работа, специально для шебанг-бин-ш-шеллеров. %)
>> не грусти ))
> PS: Х-хех!
> dat="$(sh -c 'a="'"$dat"'"; b="${a%/*}"; echo "${b#*/}/${b%/*}${a#$b}"')"
> dat="$(b="${dat%/*}"; echo "${b#*/}/${b%/*}${dat#$b}")"
> PPS: За переносимость/вездеходность не ручаюсь. +За локальность перемненной b в субшеле.
> На /bin/sh -> dash прокатило.

жесть, у меня аж мороз по коже,
блин, ну и манияк же ты, Митрофаныч! (в хорошем смысле)))
на повал ))


"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 11-Янв-16 19:11 
>>[оверквотинг удален]
>> Не короче, зато ручная работа, специально для шебанг-бин-ш-шеллеров. %)
>>> не грусти ))
>> PS: Х-хех!
> жесть, у меня аж мороз по коже,
> блин, ну и манияк же ты, Митрофаныч! (в хорошем смысле)))

Остра катана.
   Запишись в секту почитателей меня. |-)
      Яндекс-кошелёк скоро.

> на повал ))


"date - установка по своему формату"
Отправлено Pahanivo , 11-Янв-16 21:57 
> Остра катана.

Терпением и спокойствием полон
Черной белой консоли сэнсэй
Шарпа и слеша самурай
Мудилам шаблон наглухо рвет
(С) Танке вроди называетсо ..


"date - установка по своему формату"
Отправлено l8saerexhn1 , 11-Янв-16 19:50 
<зануда>
Хех, ну и кто меня в man date тыкал и иди.от.ом величал? ;)
Я ведь ясно написал (и неоднократно):

раз:
> В мане пишут, что дату устанавливать надо таки в виде mm/dd/yy. А
> кастомный формат даты для установки не предусмотрен (по аналогии с форматированием
> даты при выводе)?

два (тут двояко можно понять, да, но ниже уточнил):
> Т.е., выходит, что date установку даты принимает только в формате mm/dd/yy и никаком другом виде?
> Повторю еще раз: в переменной получаю значение "dd/mm/yy" ... date понимает эту строку как US-формат и меняет местами день и месяц. И нет возможности явно указать, что где чем является (или я тугой не вижу элементарного). И нужно парсить строку, по типу как выше уважаемый Etch привел пример?

три:
> Как правильно скормить date строку вида "dd/mm/yy" (строка, разделенная слешами) так, чтобы date не интерпретировал это как US-формат даты и не "переставлял местами" день и месяц.

Просто прежде чем манами в меня кидаться, надо было внимательно посмотреть, о чем вопрос. Что строка,  нужная мне, разделена СЛЕШАМИ. Что она в таком виде интерпретируется именно как US-формат и никак иначе. И, коли так, надо ручками сменить поля dd/mm местами, буде то sed, awk, perl или еще что. Ибо чисто date так сам не сделает.
</зануда>

Подытоживая: получается, на УСТАНОВКУ даты форматы не такие гибкие, как на печать даты, так? И посредством чисто date строку "dd/mm/yy" не скормить, без "перестановки" dd/mm, указав, где какие поля за что отвечают?



"date - установка по своему формату"
Отправлено Andrey Mitrofanov , 11-Янв-16 20:39 
> Я ведь ясно написал (и неоднократно):

Вот заладил, "я, да я". Иди с миром, отрок:
пять раз перечитай на ночь https://www.gnu.org/licenses/gpl-3.0.en.html,
десять раз отбей https://www.gnu.org/philosophy/stallmans-law.html люом об пол и
перепиши начисто https://www.gnu.org/philosophy/komongistan.html на пергаменте. Аминь.

> Подытоживая: получается, на УСТАНОВКУ даты форматы не такие гибкие, как на печать