[ vujkev @ 28.08.2007. 12:42 ] @
Problem je jednostavan kako da bilo koji string (unapred definisanog formata) pretvorim u datum.


Primera radi ako imam string "28-02/2005 17.45:14" (tj. u formatu "dd-MM/yyyy HH.mm:ss") kako to pretvoriti u datum. Tražim na netu već ...... dugo i nikako ne mogu da nađem rešenje koje radi u svim slučajevima.

Dao sam naravno banalan primer, ali toliko puta su mi trebale razne konverzije stringa u datum i uvek sam nalazio neko rešenje koje radi samo u tom slučaju tako da sad hoću neko univerzalno.


Unapred hvala.


P.S. Molim vas samo da ne pitate šta će mi ovakav ulazni string, gde se koristi, možda može drugačije i sl. Ovo je čisto hipotetičko pitanje i samo mi treba odgovor da li može ili ne.
[ dostanov @ 28.08.2007. 14:22 ] @
moze.

pogledaj metodu
Code:
System.Convert.ToDateTime()
i njene ulazne parametre.
[ vujkev @ 28.08.2007. 14:28 ] @
Kao što rekoh tražio sam rešenje dosta dugo, a ta funkcija je bila jedna od prvih koju sam probao. Može li malo detaljnije rešenje?

Meni treba konkretan kod pošto očigledno ne mogu na netu da nađem odgovarajuće rešenje.
[ boomLM @ 28.08.2007. 14:54 ] @
“Molim vas samo da ne pitate šta će mi ovakav ulazni string, gde se koristi, možda može drugačije i sl. Ovo je čisto hipotetičko pitanje i samo mi treba odgovor da li može ili ne. ”

Taj PS je ravan utopiji postojanja programa koji će univerzalno rešavati sve probleme za konačno (željeno-uslovljeno)vreme!

Ipak treba da navedeš bar gde se koristi ako se plašiš da će ti neko "ukrasti" ideju
Postoje brojne funkcije kako u .NET u tako i u drugim jezicima (platformama) koje vrše konverzije.

Univerzalno rešenje postoji samo ako postoji konačan broj primena (mogućnosti) što znači da bi ti trebalo nešto poput switch case za svaki problem...
[ Java Beograd @ 28.08.2007. 14:57 ] @
Ovde: http://msdn2.microsoft.com/en-...ary/system.datetime.parse.aspx
imaš komplatan opis DateTime.Parse metode.

Poslušaj savet što će ti čiča dati: Potrudi se da naučiš (što pre) da koristiš on-line MSDN help, mnogo je brže nego da čekaš da se neko od forumaša "smiluje" da postavi primer.
[ vujkev @ 28.08.2007. 22:14 ] @
@boomLM

Možda nisam bio jasan: ne želim da bilo koji string prebacim u datum, već string tačno definisanog formata (koji može da bude bilo koji). Primera radi ako kažem da je format MM.yyyy-dd onda samo takav ulazni sting hoću da prebacim u datum, sve ostale vrednosti ulaznog stringa treba da jave exception ili šta god.
Takođe mislim da sam rekao da je pitanje čisto hipotetičko iliti ŠBBKBB (šta bi bilo kad bi bilo) što znači nigde se ne koristi, ali bi moglo. Ako ti je baš toliko bitno gde se koristi evo dva primera, a ti smisli još koliko god hoćeš:
1. Iz nekog spoljnjeg resursa (drugi program, druga firma, druga država, druga .....) dobijam txt fajl sa datumima koji su u nekom xyz obliku
2. sa spoljnjeg uredjaja preko serijskog ili bilo kog drugog porta dobijam string u xyz formatu i sl.

da bi bilo još jasnije, hoću da napravim funkciju

Public function Konvertuj (sDatum as string, sFormat as string) as date

i da ta funkcija odradi to što treba

@Java Beograd

Kao što rekoh čitao sam dosta članaka na ovu temu (među njima je naravno i MSDN) i rešenje nisam našao. Jedino rešenje koje sam video je da učitam odgovarajuću kulturu i da na iskoristim njen datetime format. Ako ti možeš da mi kažeš koja kultura za datum ima format "dd-MM/yyyy HH.mm:ss" (ili bilo šta drugo što ti padne na pamet) bio bih ti zahvalan.


@everybody

Ima li neko konkretan kod koji radi ovo što želim. Nemojte mi reći pogledaj tu i tu (osim ako na stranici nema kod koji radi upravo to što treba) jer sam dosta pretraživao net, ali rešenje NE ZNAM da nađem.


[ negyxo @ 28.08.2007. 23:01 ] @
Mrzi me probati ali zar vec date tip nema neku vrstu formata u sebi? Doduse znam da ima, jedino je pitanje da li se moze custom podesiti, sto mislim da moze, bar u nekom ogranicenom formatu (tipa: mora ili dva mesta za godinu ili cetri ne moze tri).
Elem, ako to ne moze mislim da je najelegantnije da namestis f-ju koja ce to da radi. Mogao bi preko regular expression-a dosta lako da uradis, mada i rucno da pises ceo algoritam, mislim, da ne bi bilo tesko.
[ asmiki @ 29.08.2007. 09:48 ] @
Citat:
vujkev:

Možda nisam bio jasan: ne želim da bilo koji string prebacim u datum, već string tačno definisanog formata (koji može da bude bilo koji). Primera radi ako kažem da je format MM.yyyy-dd onda samo takav ulazni sting hoću da prebacim u datum, sve ostale vrednosti ulaznog stringa treba da jave exception ili šta god.

...

da bi bilo još jasnije, hoću da napravim funkciju

Public function Konvertuj (sDatum as string, sFormat as string) as date

i da ta funkcija odradi to što treba

...



Code:
DateTime d = ConvertStringToDateTime("28-02/2005 17.45:14", "dd-MM/yyyy HH.mm:ss");


Code:

private static DateTime ConvertStringToDateTime(string sDatum, string sFormat)
{
    System.IFormatProvider ci = new System.Globalization.CultureInfo("en-US", true);
    return DateTime.ParseExact(sDatum, sFormat, ci, System.Globalization.DateTimeStyles.AllowWhiteSpaces);
}
[ vujkev @ 29.08.2007. 10:15 ] @
Veliko HVALA