Вычислить дату с 1125 несколько дней назад в системах не-GNU?

Файловая система AVFS представляет представление файловой системы где каждый архивный файл /path/to/foo.zip доступно как каталог ~/.avfs/path/to/foo.zip#. Это - файловая система FUSE, которую можно установить на Солярисе. AVFS обеспечивает доступ только для чтения к наиболее распространенным форматам архивного файла.

mountavfs
for z in ~/.avfs$PWD/*.zip; do
  find "$z#" -exec grep ORA-1680 {} +
done
fusermount -u ~/.avfs   # optional

6
07.12.2010, 01:39
2 ответа

Ну, можно сделать что-то подлое как:

$ echo "`date +%s` - (1125 * 24 * 60 *60)" |bc
1194478815
$ date -r 1194478689
Wed, 07 Nov 2007 18:38:09 -0500

Протестированный на OpenBSD (определенно не основанная на гну дата), и, кажется, работает.

Разрушение его на шагах:

  • получите текущий unixtime (секунды с начала эпохи Unix):
  $ date +%s
  1291679934
  
  • получите число секунд за 1 125 дней
  $ echo "1125 * 24 * 60 *60" | bc
  97200000
  
  • вычтите один из другого (1291679934 - 97200000) = 1194478815

  • используйте новый unixtime (1194478815) для печати симпатичной даты

    $ date -r 1194478689
    Wed, 07 Nov 2007 18:38:09 -0500
    
  • Как альтернатива, на solaris можно сделать это для печати date*:

    /bin/echo "0t1194478815>Y\n<Y=Y" |adb

* ссылаемый из http://www.sun.com/bigadmin/shellme/

Кроме того, альтернатива на Солярисе для получения текущей метки времени от команды даты **:

/usr/bin/truss /usr/bin/date 2>&1 |  nawk -F= '/^time()/ {gsub(/ /,"",$2);print $2}'

** ссылаемый из http://www.commandlinefu.com/commands/view/7647/unix-timestamp-solaris

7
27.01.2020, 20:25
  • 1
    это %s и date -r BSDisms (от еще начального этапа, таким образом, они находятся на всех платформах BSD). Не ожидайте видеть их на платформах System V (например, Солярис не имеет ни одного). А-ч –  Gilles 'SO- stop being evil' 07.12.2010, 02:09
  • 2
    , Солярис, как я люблю тебя... (; –  gabe. 07.12.2010, 02:14
  • 3
    @Gilles:Вы уверены? Солярис имеет множество каталогов bin, таких как/usr/ucb/bin, которые содержат версии от других изменений Unix. SunOS 4. X было основано на BSD, в конце концов. –  camh 07.12.2010, 03:24
  • 4
    Это перестало работать, когда любой из прошедших дней имеет более или менее, чем 60*60*24 секунды, такие как секунды прыжка и календарные изменения. –  Sparr 07.12.2010, 09:01
  • 5
    @Sparr: Положительная сторона. Безопасный подход должен вычесть текущее время суток с текущей абсолютной даты и добавить 12*60*60. Это возвращает время суток между 10:59 и 13:01. Добавление 24-часовых периодов к этому и получение соответствующей даты безопасны. –  Gilles 'SO- stop being evil' 07.12.2010, 21:06

У меня была аналогичная проблема, я нашел пакет dateutils для OpenBSD 6.4. Для меня это был простой pkg _add dateutils.

#!/bin/ksh
# Using dateutils dadd (get current date) -1month -f (format to strftime)
# Set Year in YYYY formant y is YY format
lastMonth=$(dadd date -1mo -f "%Y.%m")
echo $lastMonth
mkdir /home/$usr/History/$lastMonth

Мой вывод здесь

#2018.11

ОБНОВЛЕНИЕ 1

Я запускаю эту команду 2018.12.10

HostNameHere# dadd date -1125d -f "%Y.%m"

Результат

 2015.11

Он поддерживает любое сложение или вычитание времени, которое я могу сказать. Вот команды, помогающие распечатать.#dadd -h(Это не вся распечатка.Там больше информации об опциях.

    Usage: dadd [OPTION]... [DATE/TIME] [DURATION]
    Add DURATION to DATE/TIME and print the result.
If DATE/TIME is omitted but DURATION is given, read a list of DATE/TIMEs from
stdin. If DURATION is omitted but DATE/TIME is given, read a list of DURATIONs from
stdin.

Durations are specified as nY, nMO, nW, or nD for years, months, weeks, or days
respectively, or nH, nM, nS for hours, minutes, and seconds, where N is a
(possibly negative) number.  The unit symbols can be written lower-case as well
(y, mo, w, d, h, m, s) and the unit symbol `d' can be omitted.

Note that duration addition is not commutative!
  2000-03-30 +1mo +1d -> 2000-05-01
  2000-03-30 +1d +1mo -> 2000-04-30

Здесь — команды.

Здесь — параметры форматирования.

0
27.01.2020, 20:25

Теги

Похожие вопросы