Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Format masa golang untuk Azure SDK

Format masa golang untuk Azure SDK

WBOY
WBOYke hadapan
2024-02-10 13:03:081246semak imbas

格式化 Azure SDK 的 golang 时间

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.

Isi soalan

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.

Penyelesaian

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam