/ / UNIX време в Powershell, давайки GMT - unix, powershell, time

UNIX време в Powershell дава GMT - unix, powershell, време

Първо, аз не съм кодиращ по професия, просто слабо инженерна мрежа :) Но аз съм голям вярващ в автоматизацията и се опитвам да пиша скриптове за справяне със задачи, за които са подходящи

Опитвам се да получа текущата времева маркировка UNIX за 10 минути в PowerShell, за използване в скрипт за проверка на база данни. Използвам това, за да получа текущото Unix време:

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

Но когато го пускам през UNIX време към локалноконвертор на времето (http://www.onlineconversion.com/unix_time.htm), получавам текущото време в GMT (например, ако го пусна в момента, получавам „1340620608“, което конверторът казва, че е 10: 36 AM GMT, когато действителното време е 10:36 AM CDT) Това очевидно причинява проблеми при сравняване с часовите марки на Unix в базата данни, тъй като те са в местно време. Докато бих могъл да напиша (или да намеря) функция, която да изчисли настоящото компенсиране на GMT и го прилагам към моята времева марка, аз се чудех дали има по-добър начин за това.

Отговори:

2 за отговор № 1

Опитвам:

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

Горното първо получава текущото време на GMT, след което го преобразува в правилния формат.


1 за отговор № 2

Времевите марки на Unix се определят като секунди от 1970-01-01 00:00:00 часова зона.

Ако отметките във вашата база данни се съхраняват катосекунди от 1970 г. местно време, може би трябва да поправите базата си данни. Но вероятно е времевите марки на базата данни да са стандартни часови марки Unix, базирани на UTC.

Трябва също така да проверите настройките за време и часова зона на вашата система; компютърът ви може да третира GMT като местно време (а часовникът му може да бъде няколко часа извън).


0 за отговор № 3

Това работи ли за вас?

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