Maison >développement back-end >C++ >Comment puis-je implémenter la fonctionnalité strptime() sous Windows ?

Comment puis-je implémenter la fonctionnalité strptime() sous Windows ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 14:20:11125parcourir

How Can I Implement strptime() Functionality on Windows?

strptime() pour Windows

strptime() est une fonction POSIX couramment utilisée pour analyser des chaînes de texte dans des structures tm. Malheureusement, cette fonction n'est pas disponible sous Windows.

Implémentations alternatives

Si vous recherchez une bonne implémentation équivalente de strptime() pour Windows, voici une solution qui utilise les fonctions sscanf, struct tm et mktime :

  1. Analyser la date en utilisant sscanf.
  2. Copiez les entiers dans une structure tm, en ajustant le fait que les mois sont indexés à 0 et que les années commencent en 1900.
  3. Enfin, utilisez mktime pour obtenir un entier d'époque UTC.

N'oubliez pas de définir le membre isdst de la struct tm sur -1 pour éviter les problèmes d'heure d'été.

Exemple

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    char *date_str = "MM-DD-YYYY HH:MM:SS";

    struct tm tm;
    sscanf(date_str, "%d-%d-%d %d:%d:%d", &tm.tm_mon, &tm.tm_mday, &tm.tm_year, &tm.tm_hour, &tm.tm_min, &tm.tm_sec);

    tm.tm_mon -= 1;  // Adjust for zero-indexing
    tm.tm_year -= 1900;  // Adjust for 1900 starting year

    time_t epoch = mktime(&tm);

    printf("Epoch: %ld\n", epoch);

    return 0;
}

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!

Déclaration:
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