Powershell:get-date& [datetime] :: FromFileTime返回不同​​的值

时间:2011-03-14 15:02:38

标签: powershell

为什么get-date& [datetime] :: FromFileTime在转换FileTime时返回不同的值?一个例子:

Get-Date 129442497539436142

返回0411年3月10日星期四下午4:55:53,但

[datetime]::FromFileTime("129442497539436142")

返回2011年3月10日星期四上午11:55:53

5 个答案:

答案 0 :(得分:5)

提示:我在格林威治标准时间,他们得到了同样的结果。

PS > Get-Date 129442497539436142
10 March 0411 16:55:53

PS > [datetime]::FromFileTime("129442497539436142")
10 March 2011 16:55:53

答案 1 :(得分:5)

他们为我产生了同样的结果,大概是因为我在GMT。

(FromFileTime将时间解析为UTC,Get-Date似乎使用您当地时间。)

答案 2 :(得分:1)

FileTimes就是所谓的Ticks。每秒传递1000万次。午夜时间,文件时间为0, 1601年1月1日(UTC)。

Get-date也有刻度,但Get-Date使用的刻度的基数不是1601 1月1日1 您基本上可以通过第一个数字识别2种不同类型的刻度。

文件时间标记从数字 1 开始,在-100到+ 200年的粗略范围内。

在1月1日0使用基数的刻度以 6 开始,大致在同一时间范围内...

在PowerShell中,您可以通过输入以下内容来验证1月1日1年是否为0:

[datetime]'0001-01-01' | Select-Object -property Ticks

答案 3 :(得分:0)

它基于您当地的长期日期"格式。

enter image description here

您必须更改系统"长日期"

(或)使用以下命令

(获得的最新)的ToString(" DD / MM / YYYY&#34)

enter image description here

https://technet.microsoft.com/en-us/library/ee692801.aspx

此致 Manikandan Boopathy

答案 4 :(得分:0)

获取日期从01/01/0001 00:00开始滴答声

[datetime] :: FromFileTimeUTC($ a)从01/01/1601 00:00获得滴答声

您写道:

returns Thursday, March 10, 0411 4:55:53 PM, but
returns Thursday, March 10, 2011 11:55:53 AM

相差1600年

这是一个示例:

$a = ([datetime]::Now).Ticks - ([DateTime]("01/01/0001 00:00")).Ticks
Get-Date $a # get ticks from 01/01/0001 00:00
$a = ([datetime]::Now).Ticks - ([datetime]("01/01/1601 00:00")).Ticks
[datetime]::FromFileTimeUTC($a) # get ticks from 01/01/1601 00:00