2

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

我试图在 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 偏移量并将其应用于我的时间戳,但我想知道是否有更好的方法来解决这个问题。

4

3 回答 3

4

尝试:

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

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

于 2012-06-25T16:38:30.293 回答
2

这对你有用吗?

(Get-Date).AddMinutes(-10).Subtract((Get-Date 1/1/1970)).TotalSeconds
于 2012-06-25T18:36:09.327 回答
1

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

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

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

于 2012-06-25T16:31:47.883 回答