Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Все, что нужно, так это получить в скрипте переменную с предыдущей датой от текущей.

К примеру
EXPFILE=`date +%d_%m_%Y`
Это тоже самое, что и
EXPFILE=07_03_2008 Ну к примеру.
Так вот надо получить из date ( или как то еще) дату на один день меньше, т.е. 06_03_2008.

Выкрутасы написать -1 день в date не выходят, а так было бы просто. Может я не правильно делал?

Подумал мыкнуться к базе, там то sysdate-1 чудненько работает, но по определенным ограничениям такой вариант не подходит.
select to_char(sysdate-1,'dd_mm_yyyy') from dual;

Так вот, как бы все-таки средствами Unix получить предыдущую дату?



Партнер
 

Member
Статус: Не в сети
Регистрация: 20.10.2006
А операционку и базу писать не обязательно?


 

Member
Статус: Не в сети
Регистрация: 06.09.2005
Откуда: Москва
Если бы ты ввёл в гугль запрос "unix previous date", то моментально получил бы ответ. А ответ: простого способа не существует, посему рекомендую написать утилиту прибавляющую заданное число дней к текущей дате и выводящую в формате date. Писать, естественно, не на баше, а на нормальном языке, вроде питона или пёрла (хотя, слово нормальный к последнему плохо применимо).
Добавлено спустя 18 минут, 9 секунд
Пусть требуется получить заданное время + число секунд (может быть и отрицательным - для получения времени в прошлом)
Код:
#!/usr/bin/env python
#coding=utf8

import time
import sys

if len (sys.argv) < 2:
    print time.asctime (time.localtime ())

offset = float (sys.argv[1]) + time.time ()
date = time.localtime (offset)
print time.asctime (date)

Добавлено спустя 1 час, 5 минут, 30 секунд
На самом деле, последний подход опирается на unix date, а поэтому a priori плох. Можно использовать модуль datetime, но он даёт точность до дня, и может работать только с датами после "рождества христова" по григорианскому календарю (скрипт принимает аргумент - смещение в днях, может быть отрицательным)
Код:
#!/usr/bin/env python
#coding=utf8

import datetime
import time
import sys

if len (sys.argv) < 2:
    print time.asctime (time.localtime ())

year, month, date = time.localtime()[0:3]
timeobj           = datetime.date (year, month, date)
ordinal           = timeobj.toordinal() + int (sys.argv[1])
date              = timeobj.fromordinal (ordinal)
print date.isoformat ()


 

Главное, что проблема с пол пинка не решается. Я думал, что вдруг есть какой-нибудь простой способ. В общем будем думать или писать что то свое, если ничего другого не придумается.

Если вдруг кто чего придумает, скажите плс.
Добавлено спустя 57 минут, 57 секунд
Да, кстати, спасибо за "unix previous date" в гугле. Что то я и прям тормазнул.
Есть огромная куча способов. Пока не выбрал, но как вариант работает.

DATE_STAMP=`TZ=CST+24 date +%y%m%d`
The 'TZ' parameter permits overriding the default time zone. 'CST' is the name of a timezone.

Да и если вдруг кто столкнется с подобной проблемой, то вот вам.

Date Arithmetic with the Shell
Kyle Douglass and Ed Schaefer
http://www.samag.com/documents/s=8284/s ... /0307b.htm

Если модеры/админы хотят, то тему можно закрывать.


 

Member
Статус: Не в сети
Регистрация: 06.09.2005
Откуда: Москва
Во FreeBSD date уже умеет это, кстати.


 

Member
Статус: Не в сети
Регистрация: 20.10.2006
Bozz Bishop писал(а):
Во FreeBSD date уже умеет это, кстати.


Вот и я о томже, написал бы операционку для начала где это нужно сделать и для каких целей. Если в запросе к базе то многие базы очень хорошо работаю с датами, тот же мускул.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan