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

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

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
Date в Ticks
    #38684337
КолКин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
капитанская дочка,

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

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

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

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

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

http://tickstodatetime.com/
...
Рейтинг: 0 / 0
Date в Ticks
    #38686783
КолКин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге сделал так:
Код: 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
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Date в Ticks
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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