Comments (5)
from rrule.
I am just going to bring up a workaround here as it looks this may be a more complex issue. You can work in the UTC timezone and convert your result back to NZST. Using Moment.js that would be:
new RRule({
freq: RRule.DAILY,
dtstart: moment(new Date(2014, 8, 26, 10, 30)).tz("UTC").toDate(),
count: 4
}).all()
.map(function (dt) {
return moment(dt).tz("NZST").toDate()
})
.map(function (dt) {
return dt.toISOString()
});
[
"2014-09-25T22:30:00.000Z",
"2014-09-26T22:30:00.000Z",
"2014-09-27T21:30:00.000Z",
"2014-09-28T21:30:00.000Z"
]
from rrule.
Thanks for the workaround suggestion, @lyschoening. Unfortunately, it has no effect becase moment(new Date(2014, 8, 26, 10, 30)).tz("UTC").toDate()
is identical to new Date(2014, 8, 26, 10, 30)
.
I've isolated the problem to dateutil.fromOrdinal()
. This function adjusts the resulting date by adding the offset. However, when crossing a DST boundary the offset becomes incorrect. For example:
For ordinal day 16341 (2014-09-28), the correct result should be Sun Sep 28 2014 00:00:00 GMT+1200 (NZST)
. However, new Date(millisecsFromBase + dateutil.tzOffset(new Date(millisecsFromBase)))
returns Sun Sep 28 2014 13:00:00 GMT+1300 (NZDT)
which is after DST kicks in at 02:00. The offset, 13 hours, is then applied but, because it crosses the DST boundary, it actually returns Sat Sep 27 2014 23:00:00 GMT+1200 (NZST)
which, although technically correct, is effectively the wrong date for the purposes of this function.
I'm writing a patch for fromOrdinal()
which will take into account the difference in offsets when crossing a DST boundary. I'll generate a pull request when I've done a bit of testing.
from rrule.
As a side note, and please correct me if I'm wrong, but it looks like part of the equation in dateutil.fromOrdinal()
is redundant:
...dateutil.ORDINAL_BASE.getTime() - dateutil.tzOffset(dateutil.ORDINAL_BASE)...
This will always return zero so there's no need to calculate it.
from rrule.
I believe this may be fixed. Please reopen if you are still experiencing issues.
from rrule.
Related Issues (20)
- byweekday undefined has different behavior than empty array
- Broken the link HOT 2
- Combining MINUTELY with BYHOUR and BYDAY misses out days when used with just one BYHOUR value
- Possible solution for "Invalid UNTIL value"
- [bug] Decimal interval creates an infinite loop HOT 2
- Using RRule.after and RRule.between with Hermes JS Engine HOT 1
- RRrule timezone issue
- Exdates returning UTC date without TZID offset HOT 2
- rrule.after method doesn't work if there is a TZID in the dtstart HOT 1
- returned date incorrect caused by TZ rollover HOT 5
- Occurences are wrong when DTStart includes timezone
- rrulestr constructor with options doesn't flow through DTStart or TZID
- Is this still being actively maintained?
- working with Evolution Mail and web calendar using RRULE fail because of X-EVOLUTION-ENDDATE in rrule
- Timezone issue
- How can we define a repeating rule that occurs Yearly and spans for a month - ex) Black History Month HOT 1
- Given an RRuleSet, how can we modify a single event in a recurrence HOT 1
- RRule is missing next occurrence HOT 1
- Invalid rrule string generated for single-digit year dtstart dates (ex: "0002-01-01")
- Bower install rrule does not seem to generate a dist/es5/rrule.js HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rrule.