The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > UNIX для чайников Вопросы И Ответы > Ответы на часто задаваемые вопросы > Советы и руководства
.
Google unix.com



Советы и руководства Полезные статьи от наших пользователей.

LinkBacks (?)
LinkBack этому Thread: http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
Написал Для Печатать Свидание
yoga_sawant в Закладки на Вкусное Эта нить Refback 12-25-2008 09:43 AM

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Получить дату и время за последние 1 час от текущей даты spch2o Shell программирование и сценарии 5 08-29-2008 04:32 AM
Обработка лог-файл на основе даты и времени ввода и даты / времени в лог-файл наряжаться Shell программирование и сценарии 4 03-16-2008 11:23 AM
простой способ преобразования даты в секунду к нормальной даты Травиан HP-UX 2 11-23-2006 12:25 PM
Баш простой скрипт для FTP? satnamx Shell программирование и сценарии 1 04-21-2006 11:18 AM
Простые Баш Сценарист xaphalanx Shell программирование и сценарии 3 12-21-2005 03:54 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack (1) Резьба Инструменты Искать в этом Thread Оценка: Thread Rating: 1 votes, 4.00 average. Режимы дисплея
Old 10-08-2006
ripat ripat is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Oct 2006
Место проведения: Бельгия
Сообщений: 438
Просто дата и время calulation в BASH

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

Кодекс должен быть самодостаточным объяснить.

Код:
#!/bin/bash

date2stamp () {
    date --utc --date "$1" +%s
}

stamp2date (){
    date --utc --date "1970-01-01 $1 sec" "+%Y-%m-%d %T"
}

dateDiff (){
    case $1 in
        -s)   sec=1;      shift;;
        -m)   sec=60;     shift;;
        -h)   sec=3600;   shift;;
        -d)   sec=86400;  shift;;
        *)    sec=86400;;
    esac
    dte1=$(date2stamp $1)
    dte2=$(date2stamp $2)
    diffSec=$((dte2-dte1))
    if ((diffSec < 0)); then abs=-1; else abs=1; fi
    echo $((diffSec/sec*abs))
}

# USAGE # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

# convert a date into a UNIX timestamp
    stamp=$(date2stamp "2006-10-01 15:00")
    echo $stamp

# from timestamp to date
    stamp2date $stamp

# calculate the number of days between 2 dates
    # -s in sec. | -m in min. | -h in hours  | -d in days (default)
    dateDiff -s "2006-10-01" "2006-10-32"
    dateDiff -m "2006-10-01" "2006-10-32"
    dateDiff -h "2006-10-01" "2006-10-32"
    dateDiff -d "2006-10-01" "2006-10-32"
    dateDiff  "2006-10-01" "2006-10-32"

# number of seconds between two times
    dateDiff -s "17:55" "23:15:07"
    dateDiff -m "17:55" "23:15:07"
    dateDiff -h "17:55" "23:15:07"

# number of minutes from now until the end of the year
    dateDiff -m "now" "2006-12-31 24:00:00 CEST"

# Other standard goodies from GNU date not too well documented in the man pages
    # assign a value to the variable dte for the examples below
    dte="2006-10-01 06:55:55"
    echo $dte

    # add 2 days, one hour and 5 sec to any date
    date --date "$dte  2 days 1 hour 5 sec"

    # substract from any date
    date --date "$dte 3 days 5 hours 10 sec ago"
    date --date "$dte -3 days -5 hours -10 sec"

    # or any mix of +/-. What will be the date in 3 months less 5 days
    date --date "now +3 months -5 days"

    # time conversions into ISO-8601 format (RFC-3339 internet recommended format)
    date --date "sun oct 1 5:45:02PM" +%FT%T%z
    date --iso-8601=seconds --date "sun oct 1 5:45:02PM"
    date --iso-8601=minutes

    # time conversions into RFC-822 format
    date --rfc-822 --date "sun oct 1 5:45:02PM"
Внимание! нестандартный формат % S не может работать на всех версия устарела. Работы штрафа моей GNU Дата 5.2.1

Последний раз редактировалось ripat; на 10-09-2006 10:57 AM.. Причина: Добавлено несколько вариантов функции dateDiff
 

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 10:11 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0