Как сконвертировать windows nt time format в обычную дату в golang?

Пользователь

от macy.davis , в категории: Общие вопросы , 14 дней назад

Как сконвертировать windows nt time format в обычную дату в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

1 ответ

Пользователь

от modesta , 8 дней назад

@macy.davis 

В Go есть пакет time, который предоставляет функцию ParseDuration для анализа значения временного интервала в формате Windows NT и функцию Add для применения этого интервала к определенному времени.


Вот пример кода для конвертации Windows NT-формата в обычную дату:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
    "fmt"
    "time"
)

func main() {
    windowsNTTime := "116444736000000000" // Пример Windows NT-формата

    // Разбор значения временного интервала в формате Windows NT
    duration, err := time.ParseDuration(windowsNTTime + "ns")
    if err != nil {
        fmt.Println("Ошибка при разборе временного интервала:", err)
        return
    }

    // Применение временного интервала к начальной дате
    startTime := time.Date(1601, 1, 1, 0, 0, 0, 0, time.UTC)
    endTime := startTime.Add(duration)

    // Вывод результирующей даты в формате RFC3339
    fmt.Println("Результат:", endTime.Format(time.RFC3339))
}


В этом примере windowsNTTime представляет собой значение временного интервала в формате Windows NT. Здесь мы разбираем его с использованием time.ParseDuration и добавляем полученный интервал к начальной дате (1 января 1601 года в UTC). Затем мы выводим результирующую дату в формате RFC3339.


Примечание: Код приведен для Go версии 1.13 или новее. Если у вас установлена более старая версия Go, вам может потребоваться обновить ее или использовать стороннюю библиотеку, такую как github.com/tmc/dot.