Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for floating/local time #75

Open
chris-rs opened this issue Aug 20, 2019 · 7 comments
Open

Support for floating/local time #75

chris-rs opened this issue Aug 20, 2019 · 7 comments

Comments

@chris-rs
Copy link

Hi,

According to the RFC 5545 DTSTART can also be defined in local (floating) time. This means that no timezone information will be appended to the DTSTART field.
When I assign a datetime to DTSTART (in format 2019-08-20 17:00:00) the UTC timezone will still be appended (by 'Z').
Does this package support floating times for DTSTART?

Regards,
Chris

@rlanvin
Copy link
Owner

rlanvin commented Aug 20, 2019

Does this package support floating times for DTSTART?

Hi @chris-rs,

Yes! More info:

Feel free to close the ticket if that answered your question, or provide more details if something is not working for you.

@chris-rs
Copy link
Author

Thanks @rlanvin for the fast and helpful response!
Is there a way to put the local datetime in the rrule without requiring the false argument (rfcString(false))?
I just tried:

$rule = new \RRule\RRule([
  'FREQ' => 'WEEKLY',
  'BYDAY' => ['MO','TU','WE','TH','FR','SA','SU'],
  'DTSTART' => Carbon::today()->setTime(10,0,0)->toDateTimeLocalString()
]);

But RRule still assigns Zulu timezone to DTSTART when I do $rule->rfcString()

@rlanvin
Copy link
Owner

rlanvin commented Aug 21, 2019

Well no, the lib needs a timezone to perform the calculations. Besides, the results are returned as DateTime objects, which contain a timezone as well. There is no way to NOT have a timezone internally. So if you don't provide one, the current PHP default timezone will be used (in your case, your PHP is configured with UTC I guess).

What is the problem exactly with rfcString(false)?

@chris-rs
Copy link
Author

@rlanvin events can be floating or bound to a timezone. So I should decide about the argument per event. The rfcString() is called just before the response is sent. I want to avoid putting logical rules at this place and keep this place solely responsible for generating output.

@rlanvin
Copy link
Owner

rlanvin commented Aug 23, 2019

So if I understand your problem correctly, essentially you want to keep track of whether or not a particular instance was created with a "floating time" in order for rfcString() to behave differently when no argument is passed?

@chris-rs
Copy link
Author

Yes, keeping track of floating times could be part of the RRule object since DTSTART is in a format with or without timezone info.
For now I solved it by keeping track of floating times in own Event object (which contains RRule).

@rlanvin
Copy link
Owner

rlanvin commented Aug 27, 2019

I would have done the same, it's a good workaround. Leaving this ticket open, I'll see if I can add something in the lib itself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants