Ticket #7257: parsedate.diff
File parsedate.diff, 1.1 KB (added by , 13 years ago) |
---|
-
src/system/libroot/os/parsedate.cpp
766 766 if (now == -1) 767 767 now = time(NULL); 768 768 769 localtime_r(&now, &tm); 770 int yearInCentury = tm.tm_year % 100; 771 int century = 1900 + tm.tm_year - yearInCentury; 772 769 773 if (dateMask.IsComplete()) 770 774 memset(&tm, 0, sizeof(tm)); 771 775 else { 772 localtime_r(&now, &tm);773 774 776 if (dateMask.HasTime()) { 775 777 tm.tm_min = 0; 776 778 tm.tm_sec = 0; … … 821 823 case 'y': 822 824 case 'Y': 823 825 tm.tm_year = element->value; 824 if (tm.tm_year > 1900) 826 if (tm.tm_year < 1900) { 827 // just a relative year like 11 (2011) 828 829 // interpret something like 50 as 1950 but 830 // something like 11 as 2011 (assuming now is 2011) 831 if (yearInCentury + 10 < tm.tm_year % 100) 832 tm.tm_year -= 100; 833 834 tm.tm_year += century - 1900; 835 } 836 else { 825 837 tm.tm_year -= 1900; 838 } 826 839 break; 827 840 case 'z': // time zone 828 841 case 'Z':