Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Fungsi strptime() pada Windows?

Bagaimanakah Saya Boleh Melaksanakan Fungsi strptime() pada Windows?

Susan Sarandon
Susan Sarandonasal
2024-12-22 14:20:11192semak imbas

How Can I Implement strptime() Functionality on Windows?

strptime() untuk Windows

strptime() ialah fungsi POSIX yang biasa digunakan untuk menghuraikan rentetan teks ke dalam struktur tm. Malangnya, fungsi ini tidak tersedia pada Windows.

Pelaksanaan Alternatif

Jika anda sedang mencari pelaksanaan strptime() yang setara yang baik untuk Windows, berikut ialah penyelesaian yang menggunakan fungsi sscanf, struct tm dan mktime:

  1. Hilang tarikh menggunakan sscanf.
  2. Salin integer ke dalam struct tm, laraskan fakta bahawa bulan diindeks 0 dan tahun bermula pada 1900.
  3. Akhir sekali, gunakan mktime untuk mendapatkan integer zaman UTC.

Ingat untuk menetapkan ahli isdst struct tm kepada -1 untuk mengelakkan isu penjimatan siang hari.

Contoh

#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;
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Fungsi strptime() pada Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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