summaryrefslogtreecommitdiff
path: root/time.c
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2020-07-23 11:33:11 +0900
committernagachika <nagachika@ruby-lang.org>2020-07-23 11:33:11 +0900
commit4be9bf1f67b997fc519625d56a93b8a68a70d124 (patch)
treeba256925c66e9e34905e22e8130db0321a88f8f1 /time.c
parent13d2ab0d88bbf72ed310efaec6edc46dd96fdb4d (diff)
merge revision(s) 99a9c3fe2eaab8157765d792dc871da6daea0327: [Backport #17024]
Fixed yday and wday with timezone [Bug #17024]
Diffstat (limited to 'time.c')
-rw-r--r--time.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/time.c b/time.c
index d71d43e058..d76e015f00 100644
--- a/time.c
+++ b/time.c
@@ -4558,14 +4558,15 @@ time_wday(VALUE time)
GetTimeval(time, tobj);
MAKE_TM(time, tobj);
+ if (tobj->vtm.wday == VTM_WDAY_INITVAL) {
+ VALUE zone = tobj->vtm.zone;
+ if (!NIL_P(zone)) zone_localtime(zone, time);
+ }
return INT2FIX((int)tobj->vtm.wday);
}
#define wday_p(n) {\
- struct time_object *tobj;\
- GetTimeval(time, tobj);\
- MAKE_TM(time, tobj);\
- return (tobj->vtm.wday == (n)) ? Qtrue : Qfalse;\
+ return (time_wday(time) == INT2FIX(n)) ? Qtrue : Qfalse; \
}
/*
@@ -4697,6 +4698,10 @@ time_yday(VALUE time)
GetTimeval(time, tobj);
MAKE_TM(time, tobj);
+ if (tobj->vtm.yday == 0) {
+ VALUE zone = tobj->vtm.zone;
+ if (!NIL_P(zone)) zone_localtime(zone, time);
+ }
return INT2FIX(tobj->vtm.yday);
}