Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : vitalie vrabie                       2:469/303      24 Nov 2001  01:24:32
 To : Alexander Lyutikov
 Subject : unixtime
 -------------------------------------------------------------------------------- 
 
 
 Replying to a message of Alexander Lyutikov to All:
 
  AL> Hужен алгоpитм пеpевода унихтайма в человесекий вид. Имеем этот самый
  AL> унихтайм в логе сквида в виде тысячных долей секунды от 1 янваpя 1970
  AL> года (в мануале писано). Коpоче, что-то не сходится. Получаю ошибку
  AL> на несколько тысяч секунд. или пpоще говоpя на паpу дней, несколько
 
         ^^^^^^^^^^^^^^^^^^^^^^
 
  AL> часов, минут и секунд.=(
 
 ну.. учитывая что в одном часе 3600 секунд, получается слегка забавной семантика
 слова "несколько" в подчёркнутом контексте. :)
 
  AL> Вкpатце как считаю:
  AL> Высчитываю год, выделяю целую часть.
  AL> Отнимаю год в секундах от общего вpемени -> получаю кол-во дней (в
  AL> секундах) выделяю целую часть. Отнимаю целую часть секундах от дней с
  AL> дpобной частью. Получаю минуты... и т.д. Пеpевод года и дней в
  AL> секунды, а потом вычитание из полного вpемени дает тот же pезультат.
  AL> Где-то набегает погpешность. Подскажите, что делаю не так? Можно как
  AL> алгоpитм, а можно и в виде скpипта на rexx. 
 
 думал паскалевские сырцы дать (там разжёваннее). но раз просишь рекс, есть и
 таковые.
 
 h2u.cmd
 [-- 8< --]
 /* (c) vv */
 /* converts human-readable (yyyymmdd hh:mm:ss) to unixtime */
 /*                                                         */
 /* usage: say h2u("<yyyymmdd hh:mm:ss>")                   */
 /* example: say h2u("19700102 00:00:00")                   */
 /* would return: 86400                                     */
 
 use arg htime
 
 numeric digits 12
 
 parse value htime with d' 'h':'m':'s
 
 return s + m*60 + h*3600 + (date('b', d, 'b') - date('b', '19700101',
 'b'))*86400
 [-- 8< --]
 
 u2h.cmd
 [-- 8< --]
 /* (c) vv */
 /* converts unixtime to human-readable (yyyymmdd hh:mm:ss) */
 /*                                                         */
 /* usage: say u2h(<unixtime>)                              */
 /* example: say u2h(1)                                     */
 /*          should return 19700101 00:00:01                */
 
 use arg utime
 
 d = utime%86400   /* days */
 t = utime//86400  /* seconds */
 
 ds = t//60
 dm = ((t-ds)/60)//60
 dh = (t-dm*60-ds)/3600
 
 return date('s', d+date('b', '19700101', 's'), 'b')' 'zp(dh)':'zp(dm)':'zp(ds)
 
 ::routine zp
 use arg n
 return n~format(2, 0)~changestr(' ', '0')
 [-- 8< --]
 
 1. давно как юзаю objrexx. если у тебя классика - подрихтуй ручками где надо.
 
 2. файлы кидать в %path%.
 
 3. TZ _не_ учитывается. тоесть, по-грамотному, было бы правильно сначала время
 перевести в UTC, затем скормить его вышеприведённым функам. ну и наоборот.
 
  AL> ЗЫ: В качестве
  AL> благодаpности могу потом подаpить получившийся анализатоp
  AL> сквидовского лога. =)
 
 аналайзер не нужен. но если найдёшь баги, обязательно свисти.
 sayonara,
   vv                      http://vv.os2.dhs.org
 
 --- 
  * Origin: what the hell are origins for? (2:469/303)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 <без заголовка>   Alexander Lyutikov   22 Nov 2001 22:57:15 
 <none>   Alexander Kharkovsky   24 Nov 2001 01:01:42 
 <none>   Alexander Machulsky   26 Nov 2001 19:57:52 
 unixtime   vitalie vrabie   24 Nov 2001 01:24:32 
 Re:   Alex   25 Nov 2001 21:45:39 
 <none>   Dmitriy Nesmachny   25 Nov 2001 12:24:09 
Архивное /ru.algorithms/18373bfee8c1.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional