1

Тема: AHK: Обработка времени с сайта

Cтолкнулся с такой проблемой. При получении времени с сервера, мне выдает время в секундах.
Выглядит оно вот так: 1427193636

Мне нужно как-то преобразовать его, чтобы получить год, месяц, день, час, минуту, секунду.
Желательно, мне нужен пример функции. Например FormatTume(timesecond)

2

Re: AHK: Обработка времени с сайта

Если это секунды, то сегодня 45-ый год нашей эры.

3 (изменено: teadrinker, 2015-03-24 20:52:05)

Re: AHK: Обработка времени с сайта

tuma4ok пишет:

Выглядит оно вот так: 1427193636

Хз, что за цифра. Если трактовать её как file time в секундах, тогда так получается:

TimeInSec := 1427193636
Time := 16010101   ; первое января 1601 года
Time += TimeInSec, s
MsgBox, % Time

где Time — переменная в формате YYYYMMDDHH24MISS. Получается 10:40:36 24-го марта 1646 года. Если год отбросить, остальное похоже на реальное время.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: Обработка времени с сайта

tuma4ok пишет:

Выглядит оно вот так: 1427193636

Это время в секундах, в PHP вызывается функцией time()
Нашел описание: Возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) до текущего времени.

5

Re: AHK: Обработка времени с сайта

Тогда всё просто:

TimeInSec := 1427193636
Time := 19700101   ; первое января 1970 года
Time += TimeInSec, s
MsgBox, % Time
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Обработка времени с сайта

teadrinker пишет:

Тогда всё просто

Вы не поняли. Это время в секундах которое прошло от 1 января 1970, 00:00:00 до текущего времени. То есть если бы я сейчас находился во временном пространстве 1 января 1970, 00:02:00, то результат был бы 120. Так от 1 января 1970, 00:00:00 и 1 января 1970, 00:02:00 разница в 2 минуты, а так как это время в секундах, то переведем эти 2 минуты в секунды и получим 120.

7

Re: AHK: Обработка времени с сайта

А скрипт какой результат у вас выдаёт?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Обработка времени с сайта

Всё он понял. Вы код-то запускали? Он выдаёт год, месяц и т.д. в формате АНК. Чтобы перевести его в более привычный вид, используйте команду FormatTime.

9

Re: AHK: Обработка времени с сайта

YMP, все, теперь разобрался. Спасибо всем!

10 (изменено: Странникх, 2015-07-08 03:53:03)

Re: AHK: Обработка времени с сайта

Может кто подсказать как получать дату с интернета (для этого сойдет любой сайт с точным временем) в переменную?

Задача именно с интернета, локальная дата и время не интересует.

11 (изменено: wisgest, 2015-07-08 11:28:38)

Re: AHK: Обработка времени с сайта

Странникх пишет:

Может кто подсказать как получать дату с интернета (для этого сойдет любой сайт с точным временем) в переменную?

url := "http://www.direct-time.ru/track.php?id=time_utc"
request := ComObjCreate("Microsoft.XMLHTTP")
request.open("POST", url, false)
try
    request.send()
catch {
    MsgBox Произошла ошибка.
    ExitApp 1
}
ms_utc := request.responseText
MsgBox C 01 января 1970 00:00:00 UTC прошло %ms_utc% мс.

Не слишком нагружайте сервер, иначе ваш IP могут забанить (а может, это относится только к протоколу NTP, а не HTTP — в любом случае имейте совесть).

P.S. Минское время в формате HH:mm:ss можно получить по адресу http://www.belgim.by/modules/time/time. … _time=true (судя по исходному коду

        $j.ajax({
            type: "POST",
            url: "/modules/time/time.php",
            data:{
                get_time:true
            },

требуется POST-запрос, но работает и GET).

12

Re: AHK: Обработка времени с сайта

Не могли бы Вы растолковать как в переменную загнать дату в формате ДДММГГГГ с ссылки http://www.direct-time.ru/index.php?id=20 ?

13

Re: AHK: Обработка времени с сайта

А почему вам http://www.direct-time.ru/index.php?id=20 больше нравится, чем http://www.direct-time.ru/track.php?id=time_utc? С вашей ссылки нужно парсить html, а тут сразу цифрой выдаётся.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: Обработка времени с сайта

Я не понимаю как извлечь из второй ссылки дату, мой опыт неглубок в web'е, поэтому подумал на основе графической информации, что проще из первой извлечь.

15

Re: AHK: Обработка времени с сайта

А вы скрипт, который дал вам wisgest, запускали? Цифру получали? Это цифра в милисекундах. В секунды сможете перевести? Далее по примеру чуть выше.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16 (изменено: wisgest, 2015-07-09 21:41:07)

Re: AHK: Обработка времени с сайта

teadrinker пишет:

Далее по примеру чуть выше.

Не следует забывать про часовой пояс:

; . . .
UTCOffset_sec -= A_NowUTC, sec ; учитываем часовой пояс
DateTime = 19700101 
DateTime += ms_utc // 1000 + UTCOffset_sec, sec
MsgBox %DateTime%

17

Re: AHK: Обработка времени с сайта

Yes, of course.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: Обработка времени с сайта

Теперь разобрался, спасибо

19

Re: AHK: Обработка времени с сайта

Не слишком нагружайте сервер, иначе ваш IP могут забанить (а может, это относится только к протоколу NTP, а не HTTP — в любом случае имейте совесть).

А отсюда ненадежней будет получать?
http://tycho.usno.navy.mil/timer.html

20 (изменено: wisgest, 2015-07-11 20:27:12)

Re: AHK: Обработка времени с сайта

А что, так часто требуется уточнять время? Как часто вы переоткрываете одну и ту же страницу в web-обозревателе?

По приведённой ссылке - там нет года, формат месяца неудобный...

21

Re: AHK: Обработка времени с сайта

Мне просто эта надпись не понравилась:

Здесь вы можете проверить, не внесён ли Ваш IP-адрес в список необслуживаемых адресов публичного NTP-сервера.

22

Re: AHK: Обработка времени с сайта

wisgest пишет:
; . . .
UTCOffset_sec -= A_NowUTC, sec ; учитываем часовой пояс
DateTime = 19700101 
DateTime += ms_utc // 1000 + UTCOffset_sec, sec
MsgBox %DateTime%

Не обратил внимания сразу. А какой смысл в синхронизации, если вы для определения локального времени пользуетесь локальной же переменной A_NowUTC?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

23 (изменено: wisgest, 2015-07-19 00:09:06)

Re: AHK: Обработка времени с сайта

Разве же она локальная?!
A вообще, откуда же ещё узнать часовой пояс, как не из локальных настроек:

TimeZoneOffsetInHours -= A_NowUTC, Hours
MsgBox %TimeZoneOffsetInHours%

24

Re: AHK: Обработка времени с сайта

Конечно локальная, этот пример просто показывает разницу между A_Now и A_NowUTC. Ну не знаю, локальные теоретически и неверные могут быть, например, при переезде из одного пояса в другой с лаптопом.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25

Re: AHK: Обработка времени с сайта

Откуда там взяться локальным переменным, если там не определено ни одной функции?
Выбор часового пояса — вопрос предпочтений пользователя. Если эти предпочтения, например, читать из реестра, это будет чем-то лучше?

26

Re: AHK: Обработка времени с сайта

Локальная в смысле, что время локальное показывает. Да нет, всё верно, я просто в начале не совсем понял, не запустив, думал, там операция с секундами между A_NowUTC и полученным временем. А вообще я бы попросту 3 прибавил.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

27 (изменено: wisgest, 2016-05-09 07:12:13)

Re: AHK: Обработка времени с сайта

Можно ещё так получать время с сайта:

request := ComObjCreate("Microsoft.XMLHTTP")
request.open("HEAD", "http://script-coding.com/", false)
request.send()
MsgBox % request.getResponseHeader("Date")

28 (изменено: DD, 2018-06-21 13:47:31)

Re: AHK: Обработка времени с сайта

29 (изменено: DD, 2018-06-21 13:49:20)

Re: AHK: Обработка времени с сайта

Как объединить следующие два кода teadrinker`а (конвертирующего секунды в дату) и wisgest (учитывающего часовой пояс) из постов 5 и 16? —

TimeInSec := 1427193636
Time := 19700101   ; первое января 1970 года
Time += TimeInSec, s
MsgBox, % Time
; . . .
UTCOffset_sec -= A_NowUTC, sec ; учитываем часовой пояс
DateTime = 19700101 
DateTime += ms_utc // 1000 + UTCOffset_sec, sec
MsgBox %DateTime%

30 (изменено: DD, 2018-06-22 14:16:43)

Re: AHK: Обработка времени с сайта

31

Re: AHK: Обработка времени с сайта

Верно ли записан этот код? —

STRING := FormatSeconds(1529617543)
MsgBox % STRING
FormatSeconds(NumberOfSeconds)
{
    time = 19700101   ; первое января 1970 года
    time += %NumberOfSeconds%, seconds
    ;FormatTime, time, %time%, dd.MM.yyyy, h:mm:ss
    FormatTime, time1, %time%, LongDate
    FormatTime, time2, %time%, H:mm:ss
    StringReplace, time1, time1, %A_Space%г., , All
    time = %time1%`, %time2%
    return time
}

32

Re: AHK: Обработка времени с сайта

Есть онлайн-конвертеры Epoch converter.
Там и тестируйте.

+ DD

33

Re: AHK: Обработка времени с сайта

Спасибо! Оказалось, что время должно быть 00:45:43, а в коде выводится 21:45:43. Это из-за того, что часовой пояс не учтён?

34

Re: AHK: Обработка времени с сайта

https://ru.wikipedia.org/wiki/Unix-%D0% … 0%BC%D1%8F

35 (изменено: DD, 2018-06-22 20:04:50)

Re: AHK: Обработка времени с сайта

А-а, значит таки UTC. Как можно задействовать код wisgest`а, который к сожалению дал его с сокращением?

; . . .
UTCOffset_sec -= A_NowUTC, sec ; учитываем часовой пояс
DateTime = 19700101 
DateTime += ms_utc // 1000 + UTCOffset_sec, sec
MsgBox %DateTime%

36

Re: AHK: Обработка времени с сайта

Если поймёте как работают эти 2 скрипта, то и модифицировать будет несложно.

37 (изменено: DD, 2018-06-22 21:24:14)

Re: AHK: Обработка времени с сайта

Выше teadrinker писал, что достаточно прибавить 3, так и сделал:

STRING := FormatSeconds(1529617543)
MsgBox % STRING
FormatSeconds(TimeInSec)
{
   DateTime := 19700101   ; первое января 1970 года
   DateTime += TimeInSec, sec
   ;FormatTime, DateTime, %DateTime%, dd.MM.yyyy, h:mm:ss
   FormatTime, DateTime1, %DateTime%, LongDate
   FormatTime, DateTime2, %DateTime%, H:mm:ss
   RegExMatch(DateTime2, "(\d+)(:\d+:\d+)", match)
   h1 := match1 + 3
   StringReplace, h1, h1, 24, 00, All
   h2 := match2
   DateTime2 = %h1%%h2%
   StringReplace, DateTime1, DateTime1, %A_Space%г., , All
   DateTime = %DateTime1%`, %DateTime2%
   return DateTime
}

38

Re: AHK: Обработка времени с сайта

И уменьшили время на 21 час.
Читайте про команды, которые используете в скрипте.
В частности EnvAdd, EnvSub.

39

Re: AHK: Обработка времени с сайта

Почему же уменьшил? Вот как было и стало:

21 июня 2018, 21:45:43
21 июня 2018, 00:45:43

Кажись, так и надо.

40

Re: AHK: Обработка времени с сайта

Это я делал для скрипта мониторинга группы ВКонтакта (замены "минут назад" и т.п.) — там тоже время соответствует.

41 (изменено: Malcev, 2018-06-23 02:54:28)

Re: AHK: Обработка времени с сайта

Что больше 21 июня 21:45 или 21 июня 00:45?

42 (изменено: DD, 2018-06-23 06:32:48)

Re: AHK: Обработка времени с сайта

А, точно. Ну тогда я день увеличу и прочее предусмотрю.

43

Re: AHK: Обработка времени с сайта

wisgest пишет:

UTCOffset_sec -= A_NowUTC, sec ; учитываем часовой пояс

Кстати в этом рассчете ошибка:

loop
{
   UTCOffset_sec := ""
   UTCOffset_sec -= A_NowUTC, sec ; учитываем часовой пояс
   if (UTCOffset_sec != 10800)
      msgbox % UTCOffset_sec
}