Pass Unix Timestamp til REST API ved hjælp af Curl Under Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger curl til at interagere med REST API for JetBrains 'YouTrack problemtracker fra kommandolinjen i Windows. Det er en meget enkel proces, der ikke bruger noget andet værktøj end krøller (bygget som en enkelt Windows-eksekverbar). Jeg vil gerne beholde enkelheden, men jeg har kørt ind i et problem. En af API'erne vil have mig til at passere en Unix tidsstempel, men der er ikke noget Windows-værktøj til at generere en. Jeg antager, at det ville være nemt at skrive et værktøj selv, men jeg foretrækker ikke at genopfinde hjulet.


API'en jeg ringer til er her:


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


Og jeg søger at udfylde feltet 'releaseDate'.


Er der et værktøj til at generere Unix tidsstempel på vinduer, der er selvstændige, dvs. jeg behøver ikke installere cygwin eller noget stort sådan.


EDIT: For posten her er hvad jeg endte med at gøre (sin del af en * .bat-fil):


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

Bedste reference


med indfødte MS powershell dette kan virke:


Get-Date -UFormat "\%s" 


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

Andre referencer 1


DateTime.Now.Ticks i Windows er antallet af 'hundredvis af nano sekunder' siden 01/01/0001.


Unix tidsstempel er antallet af sekunder siden 01/01/1970.


Du bør være i stand til at trække fra for at få målet tidsstempel.


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