为什么get-date& [datetime] :: FromFileTime在转换FileTime时返回不同的值?一个例子:
Get-Date 129442497539436142
返回0411年3月10日星期四下午4:55:53,但
[datetime]::FromFileTime("129442497539436142")
返回2011年3月10日星期四上午11:55:53
答案 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)
它基于您当地的长期日期"格式。
您必须更改系统"长日期"
(或)使用以下命令
(获得的最新)的ToString(" DD / MM / YYYY&#34)
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