powershell 以毫秒为单位查找时间?

puruo6ea  于 2023-01-20  发布在  Shell
关注(0)|答案(7)|浏览(263)

如何使用PowerShell找到以毫秒为单位的时间?

4bbkushb

4bbkushb1#

您可以使用以下命令获得完整的日期(以毫秒为单位):

Get-Date -Format HH:mm:ss.fff
jslywgbw

jslywgbw2#

这个问题建议查找以毫秒为单位的给定日期时间(Microsoft纪元时间)。

[Math]::Round((Get-Date).ToFileTime()/10000)

[Math]::Round((Get-Date).ToFileTimeUTC()/10000)

要将其转换为Unix纪元时间(以秒为单位):

[Math]::Round((Get-Date).ToFileTime() / 10000000 - 11644473600)

其中,11644473600是Microsoft纪元(公元1601年1月1日)和Unix纪元(1970年1月1日12 AM UTC/GMT)之间经过的秒数
https://msdn.microsoft.com/en-us/library/system.datetime.tofiletime(v=vs.110).aspx

wswtfjt7

wswtfjt73#

在PowerShell中,您可以将时间值转换为时间跨度并调用TotalMilliseconds方法:

([TimeSpan]"00:05:00").TotalMilliseconds # Returns 300000

([TimeSpan] (Get-Date).ToShortTimeString()).TotalMilliseconds # Returns total milliseconds from 00:00:00 till now
igsr9ssn

igsr9ssn4#

如果您需要(亚)毫秒分辨率,请查看System.Diagnostics.Stopwatch

$stopwatch = New-Object System.Diagnostics.Stopwatch
$stopwatch.Start()
$stopwatch.Stop()
$stopwatch
bis0qfac

bis0qfac5#

这应该行得通:

[DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds()

退货

1624186843769
hk8txs48

hk8txs486#

10,000个tick是1毫秒。(1个tick是100纳秒。)是否必须使用UTC是另一个问题。Microsoft tick和filetime以及unix时间都是从不同的日期计数的。

(get-date).ticks/10000 # local time (I'm EST -5:00)

63808255598664.8

([datetime]'1/1/2023').ticks/10000

63808128000000

([timespan]10000).TotalMilliseconds

1

([datetimeoffset]'1/1/2023').ticks/10000      # from 1/1/0001 local time

63808128000000

([datetimeoffset]'1/1/2023').ToUnixTimeMilliseconds() # from 1/1/1970 utc

1672549200000

([datetimeoffset]'1/1/2023').ToFileTime()/10000 # milliseconds from 1/1/1601 utc

13317022800000


([datetimeoffset]'1/1/0001').ticks

0

([datetimeoffset]'12/31/1969 7pm').ToUnixTimeMilliseconds()

0

([datetimeoffset]'12/31/1600 7pm').ToFileTime() # ticks

0
daolsyd0

daolsyd07#

Vignesh Narendran的回答给出了以UTC为单位的历元毫秒时间。
如果您希望它以计算机时区的形式显示为字符串:

(Get-Date -UFormat %s).Replace('.', '').Substring(0, 13)

作为数字:

[Long](Get-Date -UFormat %s).Replace('.', '').Substring(0, 13)

PowerShell 7.1为Get-Date添加了一个-AsUTC开关(如果您需要UTC)。

相关问题