From b2308068bc024890ab6713ca48da047846ef4aab Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 17 May 1996 16:42:38 +0000 Subject: [PATCH] Corretta win2raw delle date git-svn-id: svn://10.65.10.50/trunk@2850 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/maskfld.cpp | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/include/maskfld.cpp b/include/maskfld.cpp index ec5c0e064..5e22a86ba 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -160,7 +160,7 @@ bool TMask_field::ok() const // Certified 100% void TMask_field::parse_head(TScanner&) -{} +{} short TMask_field::dlg() const { @@ -2971,16 +2971,38 @@ const char* TDate_field::win2raw( if (s.not_empty()) { if (isdigit(s[0]) && s.len() < 10) - { - for (int meno = 2; meno <= 5 && meno < s.size(); meno += 3) - if (s[meno] != '-') - { - s.insert("-", meno); - } - if (s.len() == 8) // Fix century (for this millenium only) - { - s.insert("19", 6); + { + long d; + int m, y; + const int items = sscanf(s, "%ld-%d-%d", &d, &m, &y); + switch(items) + { + case 1: + d = atoi(s.left(2)); + m = atoi(s.mid(2, 2)); + y = atoi(s.mid(4)); + break; + case 2: + y = 0; + break; + case 3: + break; + default: + d = 0; + break; } + if (d > 0) + { + if (m <= 0 || y <= 0) + { + const TDate oggi(TODAY); + if (m <= 0) m = oggi.month(); + if (y <= 0) y = oggi.year(); + } + if (y < 100) + y += (y <= 10) ? 2000 : 1900; + s.format("%02d-%02d-%4d", int(d), m, y); + } } else {