Конвертировать дату в unixt timestamp - powershell - PullRequest
0 голосов
/ 17 апреля 2020

Мне нужна ваша помощь

У меня есть вывод из CSV-файла, который выглядит как показано ниже, и мне нужно конвертировать даты в Unix отметку времени. Заголовок «Запланированное время начала даты» может быть удален с помощью простой команды замены, чтобы сохранить только даты, однако каждую строку необходимо изменить на UNIX отметку времени.

Scheduled Start Date Time
2020-04-14 19:00
2020-04-15 06:00
2020-04-15 06:00
2020-04-15 14:00
2020-04-15 14:00
2020-04-15 09:00
2020-04-15 14:00
2020-04-15 09:00

Я пробовал что-то подобное, но это не работает:

$trimfile = Get-Content -Path "C:\Users\timestamp.txt"
Get-Date -Date $trimfile -UFormat %s | Out-File "C:\Users\timestamp1.txt"

1 Ответ

1 голос
/ 17 апреля 2020

Unix эпоха начинается с 1 января 1970 года, поэтому просто вычтите эту дату из текущей даты и посчитайте количество секунд между:

# Read all timestamps into variable
$timestamps = Get-Content C:\Users\timestamp.txt |Select -Skip 1

# Define unix epoch
$unixEpoch  = Get-Date '1970-01-01'

# Loop over all timestamps
for($i = 1; $i -le $timestamps.Count; $i++){
  # Calculate UTC corresponding to the timestamp
  $currentUtc = (Get-Date $timestamps[$i-1]).ToUniversalTime()

  # Calculate + round total number of seconds since epoch
  $totalSeconds = ($currentUtc - $unixEpoch).TotalSeconds
  [Math]::Round($totalSeconds) |Out-File "C:\Users\timestamp${i}.txt"
}

Если локаль на машине не не распознавать формат отметки времени, используйте [datetime]::Parse($timestamp[$i-1], [cultureinfo]::InvariantCulture) вместо Get-Date $timestamp[$i-1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...