Jeg er ny i DotNet og C#. Jeg ønsker å konvertere en streng i mm/dd/yyyy
format til DateTime
objekt. Jeg prøvde parse-funksjonen som nedenfor, men den kaster en kjøretidsfeil.
DateTime dt=DateTime.Parse("24/01/2013");
Noen ideer om hvordan kan jeg konvertere den til datetime?
Du må bruke DateTime.ParseExact
med formatet "dd/MM/yyyy"
.
DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Det er sikrere hvis du bruker d/M/yyyy
for formatet, siden det vil håndtere både ensifret og tosifret dag/måned. Men det avhenger egentlig av om du forventer en- eller tosifrede verdier.
Datoformatet dag/måned/år
kan være et akseptabelt datoformat for noen kulturer. For eksempel for den kanadiske kulturen en-CA
vil DateTime.Parse
fungere som:
DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));
Eller
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread's culture
Begge linjene ovenfor vil fungere fordi strengens format er akseptabelt for en-CA
kultur. Siden du ikke leverer noen kultur til DateTime.Parse
-kallet ditt, brukes din nåværende kultur til parsing som ikke støtter datoformatet. Les mer om dette på DateTime.Parse.
En annen metode for parsing er å bruke DateTime.TryParseExact
.
DateTime dt;
if (DateTime.TryParseExact("24/01/2013",
"d/M/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
{
//valid date
}
else
{
//invalid date
}
TryParse
-gruppen av metoder i .Net-rammeverket kaster ikke unntak på ugyldige verdier, i stedet returnerer de en bool
-verdi som indikerer suksess eller feil i parsing.
**Legg merke til at jeg har brukt enkelt d
og M
for henholdsvis dag og måned. Enkelt d
og M
fungerer for både enkelt/dobbeltsifret dag og måned. Så for formatet d/M/yyyy
kan gyldige verdier være:
For videre lesing bør du se: Egendefinerte dato- og tidsformatstrenger.
bruk DateTime.ParseExact
.
string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
null
vil bruke den gjeldende kulturen, noe som er noe farlig. Prøv å levere en spesifikk kultur
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)
Du kan bruke formatet "dd/MM/yyyy"
for å bruke det i DateTime.ParseExact
.
Konverterer den angitte strengrepresentasjonen av en dato og klokkeslett til dens DateTime-ekvivalent ved hjelp av det angitte formatet og kulturspesifikke formatinformasjon. Strengrepresentasjonens format må samsvare nøyaktig med det angitte formatet. det angitte formatet nøyaktig..
DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Her er en DEMO
.
For mer informasjon, se Custom Date and Time Format Strings
.