diff options
Diffstat (limited to 'ext/calendar/calendar.c')
-rw-r--r-- | ext/calendar/calendar.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/ext/calendar/calendar.c b/ext/calendar/calendar.c index 1f92b9f2e0..fd487607ba 100644 --- a/ext/calendar/calendar.c +++ b/ext/calendar/calendar.c @@ -420,15 +420,21 @@ PHP_FUNCTION(cal_from_jd) add_assoc_long(return_value, "year", year); /* day of week */ - dow = DayOfWeek(jd); - add_assoc_long(return_value, "dow", dow); - add_assoc_string(return_value, "abbrevdayname", DayNameShort[dow], 1); - add_assoc_string(return_value, "dayname", DayNameLong[dow], 1); + if (cal != CAL_JEWISH || year > 0) { + dow = DayOfWeek(jd); + add_assoc_long(return_value, "dow", dow); + add_assoc_string(return_value, "abbrevdayname", DayNameShort[dow], 1); + add_assoc_string(return_value, "dayname", DayNameLong[dow], 1); + } else { + add_assoc_null(return_value, "dow"); + add_assoc_string(return_value, "abbrevdayname", "", 1); + add_assoc_string(return_value, "dayname", "", 1); + } /* month name */ if(cal == CAL_JEWISH) { /* special case for Jewish calendar */ - add_assoc_string(return_value, "abbrevmonth", JEWISH_MONTH_NAME(year)[month], 1); - add_assoc_string(return_value, "monthname", JEWISH_MONTH_NAME(year)[month], 1); + add_assoc_string(return_value, "abbrevmonth", (year > 0 ? JEWISH_MONTH_NAME(year)[month] : ""), 1); + add_assoc_string(return_value, "monthname", (year > 0 ? JEWISH_MONTH_NAME(year)[month] : ""), 1); } else { add_assoc_string(return_value, "abbrevmonth", calendar->month_name_short[month], 1); add_assoc_string(return_value, "monthname", calendar->month_name_long[month], 1); @@ -741,7 +747,7 @@ PHP_FUNCTION(jdmonthname) break; case CAL_MONTH_JEWISH: /* jewish month */ SdnToJewish(julday, &year, &month, &day); - monthname = JEWISH_MONTH_NAME(year)[month]; + monthname = (year > 0 ? JEWISH_MONTH_NAME(year)[month] : ""); break; case CAL_MONTH_FRENCH: /* french month */ SdnToFrench(julday, &year, &month, &day); |