Maison > développement back-end > Golang > le corps du texte

Formater l'heure Golang pour le SDK Azure

WBOY
Libérer: 2024-02-10 13:03:08
avant
1246 Les gens l'ont consulté

格式化 Azure SDK 的 golang 时间

l'éditeur php Xigua vous présentera comment formater l'heure golang du SDK Azure. Lors du développement à l’aide du SDK Azure, vous rencontrez souvent des situations où du temps de formatage est requis. Golang fournit certaines méthodes de formatage de l'heure intégrées, mais elles peuvent ne pas fonctionner correctement dans le SDK Azure. Pour résoudre ce problème, nous devons utiliser une méthode personnalisée pour formater l'heure. Voyons ensuite comment utiliser Golang pour formater l'heure dans le SDK Azure.

Contenu de la question

Considérez le golang suivant

today :=  time.Now().Format("2006-01-02T03:04:05.9999999Z")
t, _ := time.Parse(time.RFC3339Nano, today)
Copier après la connexion

Pourquoi cela n’est-il pas plus simple

t := time.Now()
Copier après la connexion

?

Sur la base de mon expérience jusqu'à présent, j'aimerais confirmer si le code ci-dessus est équivalent (je pense que oui), ou pourquoi il ne l'est pas. J'ai également fourni quelques informations générales supplémentaires sur ce que j'essaie.

Mon code complet de référentiel se trouve dans le fichier main.go sur GitHub. Cependant, pour les besoins de cette question, concentrons-nous sur l'extrait de code fourni ci-dessous.

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)
Copier après la connexion

Actuellement, ce code fonctionne comme prévu. Cependant, lorsque je simplifie la dernière ligne en t := time.Now() , cela provoque une erreur (comme indiqué dans le travail Run de Github Actions).

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
Copier après la connexion

Cela me fait me demander pourquoi l'équivalence ne tient pas, contrairement à mon attente initiale.

Solution de contournement

L'API s'attend à ce que les temps soient arrondis à la seconde. Alors essayez quelque chose comme ceci :

...
            SharedAccessExpiryTime: to.Ptr(expiryTime.Round(time.Second)),
...
            SharedAccessStartTime:  to.Ptr(startTime.Round(time.Second)),
...
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!