Corretta win2raw delle date

git-svn-id: svn://10.65.10.50/trunk@2850 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-05-17 16:42:38 +00:00
parent 09708f3513
commit b2308068bc

View File

@ -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
{