Format masa golang untuk Azure SDK

WBOY
Lepaskan: 2024-02-10 13:03:08
ke hadapan
1245 orang telah melayarinya

格式化 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)
Salin selepas log masuk

Mengapa ini tidak sama dengan lebih mudah

t := time.Now()
Salin selepas log masuk

?

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)
Salin selepas log masuk

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
Salin selepas log masuk

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)),
...
Salin selepas log masuk

Atas ialah kandungan terperinci Format masa golang untuk Azure SDK. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!