From: gamelinks007@... Date: 2020-07-22T18:43:56+00:00 Subject: [ruby-core:99277] [Ruby master Bug#17042] Times with timezones return incorrect week numbers Issue #17042 has been updated by S_H_ (Shun Hiraoka). Apparently the calculation result `ret = ((timeptr->tm_yday + 7 - wday) / 7);` is negative(`timeptr->tm_yday` is negative). ```c static int weeknumber(const struct tm *timeptr, int firstweekday) { int wday = timeptr->tm_wday; int ret; if (firstweekday == 1) { if (wday == 0) /* sunday */ wday = 6; else wday--; } ret = ((timeptr->tm_yday + 7 - wday) / 7); if (ret < 0) ret = 0; return ret; } ``` ---------------------------------------- Bug #17042: Times with timezones return incorrect week numbers https://bugs.ruby-lang.org/issues/17042#change-86665 * Author: timcraft (Tim Craft) * Status: Open * Priority: Normal * ruby -v: ruby 2.8.0dev (2020-07-15 master 79d06483a8) * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Times with timezones return incorrect week numbers from strftime. For example: $ irb -r tzinfo irb(main):001:0> Time.utc(2020, 7, 22, 12, 0, 0).strftime('%U %V %W') => "29 30 29" irb(main):002:0> Time.new(2020, 7, 22, 12, 0, 0, TZInfo::Timezone.get('America/New_York')).strftime('%U %V %W') => "00 00 00" Follow up to #17024 -- https://bugs.ruby-lang.org/ Unsubscribe: