diff --git a/lib/modules/Calendar.pmod/YMD.pike b/lib/modules/Calendar.pmod/YMD.pike index b260d89613d56ad0cc03728ca9876ef397fb51e0..9557e824a4d9343dd42b592bf59516ffd7411e00 100644 --- a/lib/modules/Calendar.pmod/YMD.pike +++ b/lib/modules/Calendar.pmod/YMD.pike @@ -2877,14 +2877,14 @@ TimeRange parse(string fmt,string arg,void|TimeRange context) { m->month=low=m->year->month(m->M); } - if (m->W) + if (m->W) m->week=low=m->year->week("w"+m->W); if (!zero_type(m->D)) m->day=low=(m->month||(context?context->month():cal->Month())) ->day((int)m->D); else if (!zero_type(m->a)) - m->day=low=m->year->day(m->a); + m->day=low=(m->month || m->year)->day(m->a); else if (!zero_type(m->e)) m->day=low=(m->week||(context?context->week():cal->Week())) ->day(m->e); diff --git a/lib/modules/Calendar.pmod/testsuite.in b/lib/modules/Calendar.pmod/testsuite.in index cb50fd22a70da5e5dc6af639200d362283f50a68..39aee6c8c26520775f1baeab7a6b32ef7c47b0a9 100644 --- a/lib/modules/Calendar.pmod/testsuite.in +++ b/lib/modules/Calendar.pmod/testsuite.in @@ -77,6 +77,8 @@ test_equal( Calendar.ISO.parse("%dT%h:%m:%s", "19980717T14:08:55")->set_timezone test_equal( Calendar.ISO.set_timezone("UTC")->parse("%dT%h:%m:%s", "19980717T14:08:55"), Calendar.ISO.set_timezone("UTC")->parse("%dT%h:%m:%s", "19980717T14:08:55") ) +test_eq(Calendar.parse ("%Y %M %a", "2005 Oct 7"), Calendar.Day (2005, 10, 7)) +test_eq(Calendar.parse ("%Y %a", "2005 7"), Calendar.Day (2005, 1, 7))