Передайте метку времени Unix в REST API, используя Curl под Windows - PullRequest
0 голосов
/ 01 мая 2011

Я использую curl для взаимодействия с REST API системы отслеживания проблем YouTrack JetBrains из командной строки Windows.Это очень простой процесс, который не использует никакой другой утилиты, кроме curl (построен как отдельный исполняемый файл Windows).Я хотел бы сохранить простоту, но я столкнулся с проблемой.Один из API хочет, чтобы я передал метку времени Unix, но не существует утилиты Windows для ее генерации.Я полагаю, было бы достаточно просто написать утилиту самостоятельно, но я бы предпочел не изобретать велосипед заново.

API, который я вызываю, находится здесь:

http://confluence.jetbrains.net/display/YTD3/PUT+Version

И я собираюсь заполнить поле «releaseDate».

Существует ли утилита для генерирования метки времени Unix для автономных окон, т.е. мне не нужно устанавливать cygwin иличто-то такое огромное.

РЕДАКТИРОВАТЬ: Для записи вот что я в итоге сделал (его часть * .bat файла):

type nul >pcmd.ps1
echo $timestamp=Get-Date -UFormat '%%s' >>pcmd.ps1
echo $timestamp=[Math]::Truncate($timestamp) >> pcmd.ps1
echo curl "http://myserver/rest/admin?releaseDate=$timestamp&isReleased=true" -v -b yt --upload-file empty >>pcmd.ps1

type pcmd.ps1

powershell - <pcmd.ps1

Ответы [ 2 ]

1 голос
/ 01 мая 2011

с собственным PowerShell MS это может работать:

Get-Date -UFormat "%s" 

http://technet.microsoft.com/en-us/library/dd347647.aspx

0 голосов
/ 01 мая 2011

DateTime.Now.Ticks в Windows - это число «сотен нано секунд», начиная с 01/01/0001.

метка времени Unix - это количество секунд с 01 января 1970 года.

Вы должны быть в состоянии вычесть, чтобы получить целевую отметку времени.

DateTime dateTimeIWant = new DateTime(2011,05,01);
int targetUnixTimeStamp = (dateTimeIWant.Ticks - new DateTime(1970,1,1).Ticks) / 10000;
...