Rumah >pembangunan bahagian belakang >Golang >Format masa golang untuk Azure SDK
editor php Xigua akan memperkenalkan anda cara memformat masa golang Azure SDK. Apabila membangunkan menggunakan Azure SDK, anda sering menghadapi situasi di mana masa pemformatan diperlukan. Golang menyediakan beberapa kaedah pemformatan masa terbina dalam, tetapi kaedah tersebut mungkin tidak berfungsi dengan betul dalam Azure SDK. Untuk menyelesaikan masalah ini, kita perlu menggunakan kaedah tersuai untuk memformat masa. Seterusnya, mari kita lihat cara menggunakan golang untuk memformat masa dalam Azure SDK.
Pertimbangkan golang berikut
today := time.Now().Format("2006-01-02T03:04:05.9999999Z") t, _ := time.Parse(time.RFC3339Nano, today)
Mengapa ini tidak sama dengan lebih mudah
t := time.Now()
?
Berdasarkan pengalaman saya setakat ini, saya ingin mengesahkan sama ada kod di atas adalah setara (saya rasa begitu), atau mengapa tidak. Saya juga telah memberikan beberapa lagi maklumat latar belakang tentang perkara yang saya cuba.
Kod repositori lengkap saya ada dalam fail main.go
di GitHub. Walau bagaimanapun, untuk tujuan soalan ini, mari fokus pada coretan kod yang disediakan di bawah.
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)
Pada masa ini, kod ini berfungsi seperti yang diharapkan. Walau bagaimanapun, apabila saya memudahkan baris terakhir kepada t := time.Now()
, ia menyebabkan ralat (seperti yang ditunjukkan dalam kerja Jalankan Tindakan Github).
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
Ini membuatkan saya mempersoalkan mengapa kesetaraan tidak berlaku, bertentangan dengan jangkaan awal saya.
API menjangkakan masa akan dibundarkan kepada saat. Jadi cuba sesuatu seperti ini:
... SharedAccessExpiryTime: to.Ptr(expiryTime.Round(time.Second)), ... SharedAccessStartTime: to.Ptr(startTime.Round(time.Second)), ...
Atas ialah kandungan terperinci Format masa golang untuk Azure SDK. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!