Corretta win2raw delle date
git-svn-id: svn://10.65.10.50/trunk@2850 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
09708f3513
commit
b2308068bc
@ -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
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user