Функция Powershell для преобразования времени Unix в строку? - PullRequest
3 голосов
/ 25 апреля 2011

Я пытаюсь прочитать поля даты в базе данных Firefox place.sqlite, используя ADO.NET и PowerShell.

Очевидно, что эти поля находятся во времени Unix.

Я ищу преобразование в .Net datetime или строку

Edit: Я хочу связать данные с WPF GridView.

Мне нужен либо способ преобразования в запросе SQL, либо какой-либо другой способ при привязке данных к сетке.

Ответы [ 4 ]

8 голосов
/ 25 апреля 2011

Что-то вроде этого должно поставить вас на правильный путь:

[TimeZone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($unix))
3 голосов
/ 25 апреля 2011
function Convert-UnixTimeToDateTime([int]$UnixTime)
{
    (New-Object DateTime(1970, 1, 1, 0, 0, 0, 0, [DateTimeKind]::Utc)).AddSeconds($UnixTime)
}

Возвращает объект с "kind", установленным в Utc.Затем, если вам нужно местное время, вызовите метод ToLocalTime для результирующего объекта.

2 голосов
/ 26 апреля 2011

Рабочее решение моей проблемы:

SELECT datetime (b.dateAdded / 1000000, 'unixepoch', 'localtime') dateAdded  from moz_bookmarks

Кстати, оно частично скрыто в оригинальной документации .

Другая часть заключается в том, что вы должны выяснить, что вы должны разделить целое число на 1000000, чтобы получить секунды.

2 голосов
/ 25 апреля 2011
[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds(1303743289))
...