15

PowerShell SQLiteモジュールを使用して SQLite データベースを解析していますが、いくつかの戻り値が作成および変更されています。どちらも Unix 時間です。

私がやりたいのは、それをどうにかして「人間の時間」に変換することです。読みやすくするために、他の SQL クエリの一部を削除しました。

Import-Module SQLite
mount-sqlite -name GoogleDrive -dataSource E:\Programming\new.db
$cloud_entry = Get-ChildItem GoogleDrive:\cloud_entry

foreach ($entry in $cloud_entry)
{
    $entry.created
}

出力は、Unix タイムスタンプの大きな列のように見えます。

1337329458

更新:私は最終的に次のことを行いました:

$ctime = $entry.created
[datetime]$origin = '1970-01-01 00:00:00'
$origin.AddSeconds($ctime)
4

9 に答える 9

30

Unix タイムスタンプを .NET DateTime に変換するを参照してください。

これは PowerShell で簡単に再現できます。

$origin = New-Object -Type DateTime -ArgumentList 1970, 1, 1, 0, 0, 0, 0
$whatIWant = $origin.AddSeconds($unixTime)
于 2012-05-28T08:45:27.547 に答える
19
Function Convert-FromUnixDate ($UnixDate) {
   [timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($UnixDate))
}

$niceTime = Convert-FromUnixDate $ctime

PS C:\> $niceTime

Friday, 18 May 2012 8:24:18 p.m.
于 2014-01-20T13:00:41.940 に答える
8
$date = get-date "1/1/1970"
$date.AddSeconds($unixTime).ToLocalTime()
于 2016-03-22T11:39:50.797 に答える
5

簡単なワンライナー:

(Get-Date "1970-01-01 00:00:00.000Z") + ([TimeSpan]::FromSeconds($unixTime))
于 2018-01-15T14:32:48.860 に答える
1
$ctime = $entry.created
[datetime]$origin = '1970-01-01 00:00:00'
$origin.AddSeconds($ctime)
于 2012-05-28T09:02:31.417 に答える