LINUX.ORG.RU
ФорумAdmin

Date


0

0

Не получается получить дату. Нужно от 2 авг. отнять 45 дней.
Пробовал примерно так (с вариантами): date --date="(date -d 2 aug) - 45 day"

Ответ на: комментарий от Begemoth

или тебе надо так

max@neptune:~/
% date --date="(date -d 2 aug) - 45 day" '+%Y-%m-%d'
2010-04-23
Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

вроде правильно

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

GotF ★★★★★
()
Ответ на: комментарий от GotF

2-ое августа минус 45 дней — это где-то середина июня. А в данном случае отсчитывается от сегодняшней даты.

GotF ★★★★★
()
Ответ на: комментарий от Begemoth

Ага, так работает. А можно как-то использовать date, например, для конверсии заданного времени в формате unixtime в другой формат?

┌[~]
└> date --date=1275918025 '+%s'
date: invalid date `1275918025'

как-то озадачивает.

GotF ★★★★★
()
Ответ на: комментарий от anonymus123

Вот так работает, но для этого нужно знать, сколько прибавить. Так что не подходит ... (

date -d "(date) +56 day -45 day"
Птн Июн 18 17:54:04 VOLST 2010

anonymus123
() автор топика
Ответ на: комментарий от anonymus123

Вот как оказывается! )


date -d '-45 day 2 Aug'

и так:

date -d '45 days ago 2 Aug'

anonymus123
() автор топика
Ответ на: комментарий от anonymus123

Теперь нужно вывести первый понедельник Августа ... )

Это просто:

┌[~]
└> ncal | awk '/^Mo/ {print $2}'
7
┌[~]
└> ncal aug 2010 | awk '/^Mo/ {print $2}'
2
GotF ★★★★★
()
Ответ на: комментарий от anonymus123

anonymus123> Теперь нужно вывести первый понедельник Августа

Вот такой хак:

$ faketime '1 Aug 2010' date -d '1 Monday'
Mon Aug  2 00:00:00 IDT 2010

$ faketime '1 Aug 2010' date -d '2 Monday'
Mon Aug  9 00:00:00 IDT 2010

$ faketime '1 Aug 2010' date -d '3 Monday'
Mon Aug 16 00:00:00 IDT 2010]
sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.