php小編西瓜為您介紹如何格式化Azure SDK的golang時間。在使用Azure SDK進行開發時,經常會遇到需要格式化時間的情況。 Golang提供了一些內建的時間格式化方法,但它們在Azure SDK中可能無法正常運作。為了解決這個問題,我們需要使用自訂的方法來格式化時間。接下來,讓我們一起來看看如何使用golang來格式化Azure SDK中的時間。
考慮以下 golang
today := time.Now().Format("2006-01-02T03:04:05.9999999Z") t, _ := time.Parse(time.RFC3339Nano, today)
為什麼這不等於更簡單的
t := time.Now()
?
根據我目前的經驗,我想確認上面的程式碼是否等效(我認為是等效的),或者為什麼不是等效的。我還提供了有關我所嘗試的更多背景資訊。
我的完整儲存庫程式碼位於 GitHub 的 main.go
檔案中。但是,出於本問題的目的,讓我們專注於下面提供的程式碼片段。
sasToken, err := client.ListAccountSAS( ctx, resourceGroupName, storageAccountName, armstorage.AccountSasParameters{ KeyToSign: to.Ptr("key1"), SharedAccessExpiryTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, tomorrow); return t }()), Permissions: to.Ptr(armstorage.PermissionsR), Protocols: to.Ptr(armstorage.HTTPProtocolHTTPSHTTP), ResourceTypes: to.Ptr(armstorage.SignedResourceTypesS), Services: to.Ptr(armstorage.ServicesB), SharedAccessStartTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, today); return t }()), }, nil)
目前,此程式碼可以按預期運行。但是,當我將最後一行簡化為 t := time.Now()
時,會導致錯誤(如 Github Actions 的 Run job 所示)。
today 2023-09-18T07:54:42.6314723Z should be formatted as 2023-09-16T11:42:03.1567373Z tomorrow 2023-09-19T07:54:42.6314723Z should be formattes as 2023-09-17T11:42:03.1567373Z 2023/09/18 07:54:43 POST https://management.azure.com/subscriptions/***/resourceGroups/go-azure-sdk/providers/Microsoft.Storage/storageAccounts/golangazure/ListAccountSas -------------------------------------------------------------------------------- RESPONSE 400: 400 Bad Request ERROR CODE: InvalidValuesForRequestParameters -------------------------------------------------------------------------------- { "error": { "code": "InvalidValuesForRequestParameters", "message": "Values for request parameters are invalid: signedStart." } } -------------------------------------------------------------------------------- exit status 1
這讓我質疑為什麼等價性不成立,這與我最初的預期相反。
此 API 期望時間會四捨五入到秒。所以嘗試這樣的事情:
... SharedAccessExpiryTime: to.Ptr(expiryTime.Round(time.Second)), ... SharedAccessStartTime: to.Ptr(startTime.Round(time.Second)), ...
以上是格式化 Azure SDK 的 golang 時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!