2012-04-19 5 views
2

У меня есть 2 файла с отметками времени в формате MMDDYYYY-HHMMSS. Для примера. 04192012-000623 и 04192012-000854.Найти разницу в метках времени в секундах

Мне нужно найти разницу между 2 секундами.

Особые случаев для проверки

  • даты трансзональной полночи. Например: 04172012-115500 & 04182012-000200.
  • это не имеет значения, какой файл приходит в первый и т.д.

Я бегу Ksh без доступа к date -d флага. Может ли кто-нибудь указать мне в правильном направлении, как это сделать? (Он будет частью более крупного сценария оболочки, поэтому никаких других языков не будет)

Предназначен для работы как на Solaris, так и на linux ksh. Заранее спасибо.

+0

питона доступной? для чистой реализации ksh вы можете найти какое-то вдохновение [здесь] (http://www.unix.com/302130352-post7.html) –

+0

Извините, я ищу решение для сценария оболочки. – kinthehouse

+1

Почему вы не можете использовать какой-либо другой язык вообще? – sinelaw

ответ

0

В качестве стартера (с моей представленной выше ссылке):

#! /usr/bin/ksh 

echo enter first time stamp 
read TIME1 
echo enter second time stamp 
read TIME2 
H1=${TIME1%:+([0-9])} 
M1=${TIME1#+([0-9]):} 
H2=${TIME2%:+([0-9])} 
M2=${TIME2#+([0-9]):} 
H1=${H1#0} 
M1=${M1#0} 
H2=${H2#0} 
M2=${M2#0} 
((MAM1=H1*60+M1)) 
((MAM2=H2*60+M2)) 
((MAM1>MAM2)) && ((MAM2=MAM2+1440)) 
((diff=MAM2-MAM1)) 
echo diff = $diff 

exit 0 
$ ./timestamp 
enter first time stamp 
17:30 
enter second time stamp 
18:05 
diff = 35 
$ ./timestamp 
enter first time stamp 
23:59 
enter second time stamp 
00:01 
diff = 2 
$ 
0

Это решение использует gnu-date и bashisms, так как я не знаю ksh.

d1=04192012-000623 
dd1="${d1:4:4}/${d1:0:2}/${d1:2:2} ${d1:9:2}:${d1:11:2}:${d1:13:2}" 
d1=04192012-000854 
dd2="${d1:4:4}/${d1:0:2}/${d1:2:2} ${d1:9:2}:${d1:11:2}:${d1:13:2}" 
echo $(($(date -d "$dd1" +%s) - $(date -d "$dd2" +%s))) 

Может быть $ {вар: от: Len} не доступен в KSH отрезать части от строк, то вы должны заменить его чем-то еще, может быть, SED.

0

стат -c с последующим одним из следующих

%X  time of last access, seconds since Epoch 

    %Y  time of last data modification, seconds since Epoch 

    %Z  time of last status change, seconds since Epoch 
Смежные вопросы