summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bc1a580)
raw | patch | inline | side by side (parent: bc1a580)
author | Linus Torvalds <torvalds@osdl.org> | |
Fri, 29 Sep 2006 19:36:13 +0000 (12:36 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Fri, 29 Sep 2006 20:04:09 +0000 (13:04 -0700) |
It just simplifies the whole thing to say
"hour = (hour % 12) + X"
where X is 12 for PM and 0 for AM.
It also fixes the "exact date" parsing, which didn't parse AM at all, and
as such would do the same "12:30 AM" means "12:30 24-hour-format" bug. Of
course, I hope that no exact dates use AM/PM anyway, but since we support
the PM format, let's just get it right.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
"hour = (hour % 12) + X"
where X is 12 for PM and 0 for AM.
It also fixes the "exact date" parsing, which didn't parse AM at all, and
as such would do the same "12:30 AM" means "12:30 24-hour-format" bug. Of
course, I hope that no exact dates use AM/PM anyway, but since we support
the PM format, let's just get it right.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
date.c | patch | blob | history |
index db4c185431b504a5d5295e21c7c6c5f08cd54d55..18259227321f47988386c2bd70888b3c967d8ab6 100644 (file)
--- a/date.c
+++ b/date.c
}
if (match_string(date, "PM") == 2) {
- if (tm->tm_hour > 0 && tm->tm_hour < 12)
- tm->tm_hour += 12;
+ tm->tm_hour = (tm->tm_hour % 12) + 12;
+ return 2;
+ }
+
+ if (match_string(date, "AM") == 2) {
+ tm->tm_hour = (tm->tm_hour % 12) + 0;
return 2;
}
static void date_pm(struct tm *tm, int *num)
{
- int hour = *num;
+ int hour, n = *num;
*num = 0;
- if (hour > 0 && hour < 12) {
- tm->tm_hour = hour;
+ hour = tm->tm_hour;
+ if (n) {
+ hour = n;
tm->tm_min = 0;
tm->tm_sec = 0;
}
- if (tm->tm_hour > 0 && tm->tm_hour < 12)
- tm->tm_hour += 12;
+ tm->tm_hour = (hour % 12) + 12;
}
static void date_am(struct tm *tm, int *num)
{
- int hour = *num;
+ int hour, n = *num;
*num = 0;
- if (hour > 0 && hour < 12) {
- tm->tm_hour = hour;
+ hour = tm->tm_hour;
+ if (n) {
+ hour = n;
tm->tm_min = 0;
tm->tm_sec = 0;
}
+ tm->tm_hour = (hour % 12);
}
static const struct special {