2012-05-28 9 views
5

ile Unix zaman dönüştürün. Ben yapmak istiyorum neBen PowerShell <a href="http://en.wikipedia.org/wiki/SQLite" rel="nofollow">SQLite</a> modülü kullanarak bir SQLite veritabanını ayrıştırma ediyorum ve dönüş değerlerinin bir çift yarattı ve Unix zaman içinde, her ikisi de, değiştirilmiş PowerShell

nasılsa olan "insan zaman" içine dönüştürmek. Okuma kolaylığı için diğer SQL sorgularından bazılarını kaldırdım.

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 
} 

ben gitti şu: çıktı Unix zaman damgaları büyük sütuna benzeyen

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

:

1337329458 

cevap

12

http://codeclimber.net.nz/archive/2007/07/10/convert-a-unix-timestamp-to-a-.net-datetime.aspx

Kolayca PowerShell bu üretebilir .

$origin = New-Object -Type DateTime -ArgumentList 1970, 1, 1, 0, 0, 0, 0 
$whatIWant = $origin.AddSeconds($unixTime) 

Düzeltme: Hatalar, hatalar düzeltildi.

+5

'[tarih saat] $ kökenli = '1970-01-01 00: 00: hem Sadece çalışır 00'' ve –

+0

anlamak için biraz daha kolay Bu hatayı alıyorum: Herhangi bir fikir? "0" bağımsız değişkenini "AddSeconds" için ":" değeriyle değiştiremezsiniz. Bazı değerler "null", çünkü veritabanındaki bazı öğeler oluşturulmuş/değiştirilmiş bir tarih olarak kabul edilmez. Bu hatanın nereden geldiğini varsayıyorum. – mrwh1t3

1
$ctime = $entry.created 
[datetime]$origin = '1970-01-01 00:00:00' 
$origin.AddSeconds($ctime) 
8
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. 
2
$date = get-date "1/1/1970" 
$date.AddSeconds($unixTime).ToLocalTime() 
1

Basit bir liner:

(Get-Date "1970-01-01 00:00:00.000Z") + ([TimeSpan]::FromSeconds($unixTime)) 
İlgili konular