C:
Tolke en dato fra en streng
Hvordan:
C tilbyr ikke en innebygd måte å analysere datoer fra strenger direkte på, så vi tyr ofte til strptime
-funksjonen tilgjengelig i biblioteket <time.h>
for POSIX-systemer. Denne funksjonen gir oss mulighet til å spesifisere det forventede formatet for inngangsstrengen og analysere den inn i en struct tm
, som representerer kalenderdato og tid nedbrutt i dens komponenter.
Her er et enkelt eksempel på hvordan du bruker strptime
til å analysere en dato fra en streng:
#include <time.h>
#include <stdio.h>
int main() {
const char *dateStr = "2023-04-01";
struct tm tm;
char buf[255];
// Analysere datostrengen til struct tm
if (strptime(dateStr, "%Y-%m-%d", &tm) == NULL) {
printf("Klarte ikke å analysere dato.\n");
} else {
// Bruke strftime for å skrive ut datoen i et leselig format
strftime(buf, sizeof(buf), "%A, %B %d, %Y", &tm);
printf("Analysert dato: %s\n", buf);
}
return 0;
}
Eksempel på utdata for dette programmet ville være:
Analysert dato: Lørdag, april 01, 2023
Det er essensielt å håndtere potensielle feil, som at strptime
ikke klarer å matche mønsteret eller støter på uventet inngang.
Dypdykk
strptime
-funksjonen, selv om den er kraftfull, er ikke en del av det standard C-biblioteket og finnes hovedsakelig på POSIX-kompatible systemer som Linux og UNIX. Denne begrensningen betyr at programmer som er avhengige av strptime
for å analysere datoer fra strenger, kanskje ikke er bærbare til ikke-POSIX-systemer som Windows uten ekstra kompatibilitetslag eller biblioteker.
Historisk sett krevde håndtering av datoer og klokkeslett i C mye manuell manipulering og omsorg, spesielt med tanke på ulike lokaliteter og tidssoner. Moderne alternativer og utvidelser til C, som C++’s <chrono>
-bibliotek og tredjepartsbiblioteker som Howard Hinnants datobibliotek for C++, tilbyr mer robuste løsninger for dato- og tidsmanipulering, inkludert analyse. Disse bibliotekene gir vanligvis bedre støtte for et bredere utvalg av datofortolkninger, tidssoner og feilhåndteringsmekanismer, noe som gjør dem foretrukket for nye prosjekter som krever omfattende dato- og tidsmanipuleringsegenskaper.
Ikke desto mindre kan forståelsen av hvordan man analyserer datoer fra strenger i C være gunstig, spesielt når man jobber med eller vedlikeholder prosjekter som må være kompatible med systemer der disse moderne verktøyene ikke er tilgjengelige eller når man jobber innenfor begrensningene av strenge C-programmeringsmiljøer.