>백엔드 개발 >C++ >Windows에서 strptime() 기능을 어떻게 구현할 수 있습니까?

Windows에서 strptime() 기능을 어떻게 구현할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-22 14:20:11127검색

How Can I Implement strptime() Functionality on Windows?

Windows용 strptime()

strptime()은 일반적으로 텍스트 문자열을 tm 구조로 구문 분석하는 데 사용되는 POSIX 함수입니다. 안타깝게도 이 기능은 Windows에서 사용할 수 없습니다.

대체 구현

Windows용 strptime()과 동등한 구현을 찾고 있다면 여기에 해결책이 있습니다. sscanf, struct tm 및 mktime 기능을 활용하는 것:

  1. Parse sscanf를 사용하여 날짜를 확인합니다.
  2. 월의 인덱스는 0이고 연도는 1900년에 시작한다는 사실을 조정하여 정수를 구조체 tm에 복사합니다.
  3. 마지막으로 mktime을 사용하여 UTC 에포크를 얻습니다. 정수.

구조체의 isdst 멤버를 설정하는 것을 기억하세요 일광 절약 시간제 문제를 방지하려면 tm을 -1로 설정하세요.

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

위 내용은 Windows에서 strptime() 기능을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.