Доброго времени суток, aLLИз элементарного, но -запутался...
Из консольного скрипта в переменную $dat получаю дату в виде "dd/mm/yyyy". Когда же устанавливаю эту дату с помощью date -s="$dat" то день и месяц меняются местами. Например, в переменную получил 08/01/2016 - 8 января, а date -s ставит 01/08/2016 - 1 августа, т.е. трактует порядок значений в переменной по-своему.
В мане пишут, что дату устанавливать надо таки в виде mm/dd/yy. А кастомный формат даты для установки не предусмотрен (по аналогии с форматированием даты при выводе)?
> Доброго времени суток, aLL
> Из элементарного, но -запутался...man date
в своем дистрибутиве
> man date в своем дистрибутивеНу как же в треде не обойтись без "мануального терапевта"...
dat="08/01/2016"; date -s $(echo $dat |sed -re '{s@([0-9]{2})\/([0-9]{2})\/@\2\/\1\/@;}');
>
> dat="08/01/2016"; date -s $(echo $dat |sed -re '{s@([0-9]{2})\/([0-9]{2})\/@\2\/\1\/@;}');
>Спасибо большое.
Т.е., выходит, что date установку даты принимает только в формате mm/dd/yy и никаком другом виде?
> Т.е., выходит, что date установку даты принимает только в формате mm/dd/yy и
> никаком другом виде?Пациент, вернитесь к терапии.
https://www.gnu.org/software/coreutils/manual/html_node/Date...
https://www.gnu.org/software/coreutils/manual/html_node/Exam...
> Пациент, вернитесь к терапии.
> 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 привел пример?
>> Пациент, вернитесь к терапии.
>> 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-format format спасибо, онлайн-дока, что смотрел ( http://linux.die.net/man/1/dialog ) как-то про эту опцию забыла. Это - решение.
Тем не менее, с date не ясно. Так, себе на будущее. Как правильно скормить date строку вида "dd/mm/yy" (строка, разделенная слешами) так, чтобы date не интерпретировал это как US-формат даты и не "переставлял местами" день и месяц.
Просто пример.
> Тем не менее, с date не ясно. Так, себе на будущее. КакДа, это https://www.gnu.org/software/coreutils/manual/html_node/Cale... таааак непонятно. Да-да-да.
> правильно скормить date строку вида "dd/mm/yy" (строка, разделенная слешами) так, чтобы
> date не интерпретировал это как US-формат даты и не "переставлял местами"
> день и месяц.Я не знаю. Ну-ну, не плачь. ... Решение с sed-ом дали. Попробуй поставить _японскую_ локаль для одного вызова. Нет, я не скажу как -- меня больше интересует "но зачееем??".
> Просто пример.
>>> Пациент, вернитесь к терапии.
> Ваши симптомы будут рассмотрены симпозиумом. ...коллеги?"консилиум", агкхр, прошу пардона.
>> Повторю еще
> иди.
Если все так просто - ну напиши одну (!) команду, как правильно надо сделать, и все.
Ну не понимаю, не троллю, не издеваюсь, "залип" - объяснить простым примером не судьба? Одна строка. Одна команда.
Если не знаешь, если лень писать - пройди мимо.
Нет же, надо обязательно набросить на вентилятор... Попросил помощи...
Грустно от таких "знатоков".
> Если все так просто - ну напиши одну (!) команду, как правильно
> надо сделать, и все.
> Ну не понимаю, не троллю, не издеваюсь, "залип" - объяснить простым примером
> не судьба? Одна строка. Одна команда.
> Если не знаешь, если лень писать - пройди мимо.
> Нет же, надо обязательно набросить на вентилятор... Попросил помощи...
> Грустно от таких "знатоков".он знает и ему не лень.
линки дал, на sed ещё раз указалну ты чего?
ладно, лови на авке
#!/bin/shdat="08/01/2016"
dat="$(echo $dat | awk -F / '{print $2"/"$1"/"$3}')"
date -s "$dat"не грусти ))
>> Грустно от таких "знатоков".
> он знает и ему не лень.
> линки дал, на sed ещё раз указал"Он" также подозревает севшего лужу г-на в некоторой неискренности из-за нарочитого нажима на "одной командой", когда у самого уже две по минимуму(dialog|date -s). А уж не осилил чуть дальше написанного и/или позёрствует-отмазывается -- без разницы. </препод прэ>
> #!/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 прокатило.
>[оверквотинг удален]
>> 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 прокатило.жесть, у меня аж мороз по коже,
блин, ну и манияк же ты, Митрофаныч! (в хорошем смысле)))
на повал ))
>>[оверквотинг удален]
>> Не короче, зато ручная работа, специально для шебанг-бин-ш-шеллеров. %)
>>> не грусти ))
>> PS: Х-хех!
> жесть, у меня аж мороз по коже,
> блин, ну и манияк же ты, Митрофаныч! (в хорошем смысле)))Остра катана.
Запишись в секту почитателей меня. |-)
Яндекс-кошелёк скоро.> на повал ))
> Остра катана.Терпением и спокойствием полон
Черной белой консоли сэнсэй
Шарпа и слеша самурай
Мудилам шаблон наглухо рвет
(С) Танке вроди называетсо ..
<зануда>
Хех, ну и кто меня в 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, указав, где какие поля за что отвечают?
> Я ведь ясно написал (и неоднократно):Вот заладил, "я, да я". Иди с миром, отрок:
пять раз перечитай на ночь 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 на пергаменте. Аминь.> Подытоживая: получается, на УСТАНОВКУ даты форматы не такие гибкие, как на печать