Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Date в Ticks / 9 сообщений из 9, страница 1 из 1
30.06.2014, 14:23
    #38683746
КолКин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
Помогите пожалуйста!!!
Мне нужно для POST-запроса к API-функциям Диадока указывать дату в тиках(100-наносекунд). Вопрос: не смог найти возможные функции перевода,они есть? Нужно для VBA6. Или если кто сможет то скажите дней в месяце правильно сколько использовать если писать свою функцию декода?(((
...
Рейтинг: 0 / 0
30.06.2014, 15:00
    #38683804
капитанская дочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
КолКин,

я про такие функции не слыхал. тики отмеряются от 1 января 1 года полночи от этого и пляши (gangnam style) или мона тупо взять 1 янв 2010 там их было 630822816000000000. а дней в месяце брать тупо стока скока их было
...
Рейтинг: 0 / 0
30.06.2014, 20:03
    #38684142
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
КолКин,

SDKПоле Ticks представляет собой целое число тиков (100-наносекундных интервалов), прошедших с момента времени 00:00:00 01.01.0001. Метка времени представляет собой момент времени без учета часового пояса, то есть ее следует интерпретировать как UTC-время. Например, чтобы преобразовать эту метку в .NET-структуру System.DateTime, можно использовать следующий код на языке C#:
new DateTime(Timestamp.Ticks, DateTimeKind.Utc);
Можно например так, если точность до секунды устраивает. Код методом тыка написан.
Если выполнять обратную процедуру из Тиков -> Время. Опять же отрезаем 7 знаков справа "мусора" и через DateAdd() добавляем колво секунд к стартовой точке.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Form_Load()
    MsgBox getTicksFromDate(DateSerial(2014, 6, 30) + TimeSerial(19, 54, 32))
    MsgBox getTicksFromDate(Now)
End Sub

Function getTicksFromDate(DateTime As Date) As String
    Dim nDate As Double
    Dim nAddSecond As Double

    '59926608000 + 7 нулей. Представляет стартовую точку 1900.01.01 00:00:00
    nDate = 59926608000#
    nAddSecond = DateDiff("s", #1/1/1900#, DateTime)
    
    getTicksFromDate = CStr(nDate + nAddSecond) & "0000000"
End Function



В качестве тестового стенда, смотрим сколько чего бывает
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Module Module1
    Sub Main()
       
        Console.WriteLine(Now.ToUniversalTime.Date.Ticks)

        Console.WriteLine(New Date(2014, 6, 30, 19, 54, 32).Ticks)
        Console.WriteLine(New Date(10000000, DateTimeKind.Utc))

        Console.ReadLine()
    End Sub
End Module
...
Рейтинг: 0 / 0
01.07.2014, 07:27
    #38684337
КолКин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
капитанская дочка,

Спасибо за цифры, так наверно и сделаю отталкиваясь от твоего, вот только по моим подсчетом это 2000 год, а не 2010
...
Рейтинг: 0 / 0
01.07.2014, 07:29
    #38684338
КолКин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
VSVLAD,

Спасибо, буду иметь ввиду.
...
Рейтинг: 0 / 0
01.07.2014, 12:25
    #38684633
капитанская дочка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
КолКинкапитанская дочка,

Спасибо за цифры, так наверно и сделаю отталкиваясь от твоего, вот только по моим подсчетом это 2000 год, а не 2010

раз ты въехал в фишку тады я спакоен
...
Рейтинг: 0 / 0
02.07.2014, 08:10
    #38685354
КолКин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
капитанская дочка,

Мне бы твое спокойствие ))) я отталкиваясь от твоей цифры насчитал тиков на 2014 год и кстати нашел сайт где тики в дату переводят
...
Рейтинг: 0 / 0
02.07.2014, 08:11
    #38685355
КолКин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
капитанская дочка,

http://tickstodatetime.com/
...
Рейтинг: 0 / 0
03.07.2014, 13:33
    #38686783
КолКин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date в Ticks
В итоге сделал так:
Код: vbnet
1.
2.
3.
4.
Const utc6 = 216000000000#, start = "01.01.2014 00:00:00", tiks2014 = 6.35241312E+17
Public Function DateToTiks() As Double
DateToTiks = DateDiff("s", start, Now) * 10000000# + tiks2000 - utc6
End Function


В константах объявил начало для расчета разницы и высчитанные до этого начала тики, а также разницу часового пояса для универсализации. ВУАЛЯ))))
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Date в Ticks / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]