授予GMT的Powershell中的UNIX时间

时间:2012-06-25 15:49:02

标签: unix powershell time

首先,我不是专业的编码人员,只是一个低级网络工程师:)但我非常相信自动化并尝试编写脚本来处理他们适合的任务

我试图在PowerShell中获取10分钟前的当前UNIX时间戳,以用于数据库检查脚本。我正在使用它来获取当前的Unix时间:

$unixtime=[int][double]::Parse((Get-Date -UFormat %s))-600

但是当我通过UNIX时间运行到本地时间转换器(http://www.onlineconversion.com/unix_time.htm)时,我得到GMT中的当前时间(例如,如果我运行它现在我得到“1340620608”,转换器说是格林尼治标准时间上午10点36分,当时实际时间是CDT上午10点36分。与数据库中的Unix时间戳相比,这显然会导致问题,因为它们是在本地时间。虽然我可以编写(或找到)一个能够计算当前GMT偏移并将其应用到我的时间戳的函数,但我想知道是否有更好的方法来解决这个问题。

3 个答案:

答案 0 :(得分:2)

尝试:

$unixtime=[int][double]::Parse($(Get-Date -date (Get-Date).ToUniversalTime()-uformat %s))

以上获取当前的GMT时间然后将其转换为正确的格式。

答案 1 :(得分:1)

Unix时间戳定义为自1970-01-01 00:00:00 GMT 以来的秒数。

如果数据库中的时间戳存储为自当地时间1970年以来的秒数,则可能需要修复数据库。但是,您的数据库时间戳可能是标准的基于UTC的Unix时间戳。

您还应该检查系统的时间和时区设置;您的计算机可能将GMT视为当地时间(其时钟可能需要几个小时)。

答案 2 :(得分:1)

这对你有用吗?

(Get-Date).AddMinutes(-10).Subtract((Get-Date 1/1/1970)).TotalSeconds