Formatieren Sie die Golang-Zeit für das Azure SDK

WBOY
Freigeben: 2024-02-10 13:03:08
nach vorne
1246 Leute haben es durchsucht

格式化 Azure SDK 的 golang 时间

php-Editor Xigua stellt Ihnen vor, wie Sie die Golang-Zeit des Azure SDK formatieren. Bei der Entwicklung mit dem Azure SDK kommt es häufig zu Situationen, in denen Formatierungszeit erforderlich ist. Golang bietet einige integrierte Zeitformatierungsmethoden, diese funktionieren jedoch möglicherweise nicht ordnungsgemäß im Azure SDK. Um dieses Problem zu lösen, müssen wir eine benutzerdefinierte Methode zum Formatieren der Uhrzeit verwenden. Schauen wir uns als Nächstes an, wie Sie mit Golang die Zeit im Azure SDK formatieren.

Frageninhalt

Bedenken Sie den folgenden Golang

today :=  time.Now().Format("2006-01-02T03:04:05.9999999Z")
t, _ := time.Parse(time.RFC3339Nano, today)
Nach dem Login kopieren

Warum ist das nicht einfacher

t := time.Now()
Nach dem Login kopieren

?

Basierend auf meinen bisherigen Erfahrungen möchte ich bestätigen, ob der obige Code gleichwertig ist (ich denke, dass er es ist) oder warum er nicht gleichwertig ist. Ich habe auch einige weitere Hintergrundinformationen zu dem bereitgestellt, was ich versuche.

Mein vollständiger Repository-Code befindet sich in der main.go-Datei auf GitHub. Für diese Frage konzentrieren wir uns jedoch auf den unten bereitgestellten Codeausschnitt.

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)
Nach dem Login kopieren

Derzeit funktioniert dieser Code wie erwartet. Wenn ich jedoch die letzte Zeile zu t := time.Now() vereinfache, verursacht dies einen Fehler (wie im Run-Job von Github Actions gezeigt).

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
Nach dem Login kopieren

Das lässt mich fragen, warum die Gleichwertigkeit entgegen meiner ursprünglichen Erwartung nicht gilt.

Problemumgehung

Die API erwartet, dass die Zeiten auf Sekunden gerundet werden. Versuchen Sie also etwas wie Folgendes:

...
            SharedAccessExpiryTime: to.Ptr(expiryTime.Round(time.Second)),
...
            SharedAccessStartTime:  to.Ptr(startTime.Round(time.Second)),
...
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonFormatieren Sie die Golang-Zeit für das Azure SDK. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!