purebasic.info

PureBasic forum
Текущее время: Пн апр 23, 2018 4:29 am

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: HTTP Date (RFC 822) to UNIX Time
СообщениеДобавлено: Вт ноя 19, 2013 5:10 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2270
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Процедура находит строку с HTTP датой (RFC 822), к примеру:
Код:
1
Date: Mon, 18 Nov 2013 14:11:25 GMT


И переводит её в UNIX Time. Без учёта регистра.
В случае ошибки возвращает -1.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
EnableExplicit
 
Procedure get_date(working_string.s)
  #finder_date_left = "Date: "
  #finder_date_left_len = 6
  #finder_date_right = " GMT"
  #finder_date_right_len = 4
 
  Protected find_left.i = FindString(working_string, #finder_date_left, 0, #PB_String_NoCase)
  Protected find_right.i = FindString(working_string, #finder_date_right, 0, #PB_String_NoCase)
 
  If find_left <> 0 Or find_right <> 0
    working_string = Mid(working_string, find_left + #finder_date_left_len, find_right - find_left - #finder_date_left_len)
    working_string = Right(working_string, Len(working_string) - 5)
   
    Protected Dim months.s(11)
    months(0) = "jan"
    months(1) = "feb"
    months(2) = "mar"
    months(3) = "apr"
    months(4) = "may"
    months(5) = "jun"
    months(6) = "jul"
    months(7) = "aug"
    months(8) = "sep"
    months(9) = "oct"
    months(10) = "nov"
    months(11) = "dec"
   
    Protected months_counter.i
    For months_counter = 0 To 11
      If months(months_counter) = LCase(Mid(working_string, 4, 3))
        working_string = ReplaceString(working_string, months(months_counter), Str(months_counter + 1), #PB_String_NoCase)
        Break
      EndIf
      If months_counter = 11
        ProcedureReturn -1
      EndIf
    Next
   
    ProcedureReturn ParseDate("%dd %mm %yyyy %hh:%ii:%ss", working_string)
  EndIf
 
  ProcedureReturn -1
EndProcedure
 
Debug get_date("TEXT TEXT Date: Mon, 04 Jun 2001 15:15:25 GMT TEXT TEXT")


_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB