Я подозреваю, что ntp не обновляют время Вашего сервера, потому что разница является слишком небольшой. У меня была подобная проблема, я видел ту же задержку каждый день, пока я не узнал, что быть небольшими ntp различия не обновит, пока определенный порог не будет присутствовать.
Проверьте Вас конфигурация на минимальный порог для синхронизации.
Я сделал бы:
perl -MPOSIX -le '
@t=localtime;
print strftime "%Y/%m/%d",
localtime time - 86400*(($t[6]-1+7-$ARGV[0])%7+1)' 4
(где 4 выше день недели, 0 в течение воскресенья, 4 в течение четверга),
perl
обычно самая безопасная опция для портативного управления датой.
Так как отправленные вопросы просят ksh или колотят ответ за простой ванильный Солярис 'X', я предполагаю, что я не в рамках инструкций, но если бы можно установить Tcl 8.5, у Вас был бы доступ к мощной команде часов для арифметики даты/времени:
Вызов tclsh...
% set delta 7
7
% clock format [clock scan "now - $delta days"]
Fri Jan 11 00:00:00 EST 2013
date
так или иначе.
– jw013
18.01.2013, 18:51
expr
и echo
таким образом, мы можем предположить, что можем использовать любую команду, доступно в ванильном Солярисе 10 установок.
– Stéphane Chazelas
18.01.2013, 22:09
Сценарий оболочки + дата не является действительно самым подходящим инструментом здесь. Ответ жемчуга, данный уже, хорош, хотя я предпочитаю явность Python:
import datetime, sys
today = datetime.date.today()
wd = today.weekday() # Mon == 0, Sun == 6
wd_wanted = int(sys.argv[1])
date_wanted = today - datetime.timedelta((wd-wd_wanted)%7 or 7)
or 7
бит решает в прошлый понедельник, когда сегодня проблема в понедельник.