Какой самый быстрый способ преобразовать дату в один формат, скажем
2008-06-01
к дате в другом формате, скажем
Sun 1st June 2008
Важным элементом на самом деле является «Солнце», потому что в зависимости от имени дня мне, возможно, придется возиться с другими вещами - недетерминированным образом. Я использую GNU bash версии 3.2.17(1)-release (i386-apple-darwin9.0).
[Предыстория: Причина, по которой я хочу сделать это из командной строки, состоит в том, что я действительно хочу записать это в команду TextMate ... Это неприятная задача, которую я все время должен выполнять в textMate.]





date -d yyyy-mm-dd
Если вам нужен больший контроль над форматированием, вы также можете добавить его следующим образом:
date -d yyyy-mm-dd +%a
просто получить ту часть Солнца, которую вы говорите, что хотите.
Это работает на моей машине Debian. По-видимому, не так на Mac. Извиняюсь.
$ date -d '2005-06-30' +'%a %F'
Thu 2005-06-30
См. man date для получения информации о других вариантах формата.
Эта опция доступна в Linux, но не в Darwin. В Дарвине вместо этого можно использовать следующий синтаксис:
date -j -f "%Y-%m-%d" 2006-06-30 +"%a %F"
Аргумент -f указывает формат ввода, а аргумент + указывает формат вывода.
Как указано ниже на другом постере, было бы разумно использовать% u (числовой день недели), а не% a, чтобы избежать проблем с локализацией.
date -d ...
похоже, не режет, так как я получаю сообщение об ошибке:
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
Я запускаю GNU bash, версия 3.2.17 (1) -release (i386-apple-darwin9.0), и, насколько известно, дата -d предназначена только для
-d dst Set the kernel's value for daylight saving time. If dst is non-
zero, future calls to gettimeofday(2) will return a non-zero for
tz_dsttime.
Чтение справочной страницы дата (1) показало бы:
-j Do not try to set the date. This allows you to use the -f flag
in addition to the + option to convert one date format to another.На самом деле, в OS X вы бы не увидели этого на странице руководства date (1).
Серьезно? Система комментариев использует разметку, отличную от ответов?
Ха, у Apple есть разные страницы руководства в Интернете, чем те, которые они установили. Я заметил это и с другими инструментами.
Спасибо за это sgm. Так что я могу вернуться и сослаться на это -
date -j -f "%Y-%m-%d" "2008-01-03" +"%a%e %b %Y"
^ ^ ^
parse using | output using
this format | this format
|
date expressed in
parsing format
Thu 3 Jan 2008
Спасибо.
Если вы просто хотите узнать день недели, не пытайтесь сопоставить строки. Это ломается, когда меняется язык. Формат %u дает вам номер дня:
$ date -j -f "%Y-%m-%d" "2008-01-03" +"%u"
4
И действительно, это был четверг. Вы можете использовать это число для индексации в массиве, который есть в вашей программе, или просто использовать само число.
Смотрите man-страницы date и strftime для более подробной информации. Однако справочная страница даты в OS X неверна, поскольку в ней не перечислены эти работающие параметры.
Извините, я просто получаю сообщение об ошибке. Запуск GNU bash, версия 3.2.17 (1) -release (i386-apple-darwin9.0)