Haha..
I'm using Chronic to parse the time users add in the Calendar. Where the code works and implements the right time, the end result is that, IF a user adds a time, then it has no date, and because it has no date, it will not show in results. Any ideas?
def set_dates unless self.natural_date.blank? || Chronic.parse(self.natural_date).blank? # check if we are dealing with a date or a date + time if time_provided?(self.natural_date) self.date = nil self.time = Chronic.parse(self.natural_date) else self.date = Chronic.parse(self.natural_date).to_date self.time = nil end end unless self.natural_end_date.blank? || Chronic.parse(self.natural_end_date).blank? # check if we are dealing with a date or a date + time if time_provided?(self.natural_end_date) self.end_date = nil self.end_time = Chronic.parse(self.natural_end_date) else self.end_date = Chronic.parse(self.natural_end_date).to_date self.end_time = nil end end end
Edit:
Here is the time_provided? method:
def time_provided?(natural_date_string) date_span = Chronic.parse(natural_date_string, :guess => false) (date_span.last - date_span.first).to_i == 1 end
Dyschronometria is a condition of cerebellar dysfunction in which an individual cannot accurately estimate the amount of time that has passed (i.e., distorted time perception). It is associated with cerebellar ataxia, when the cerebellum has been damaged and does not function to its fullest ability.
Drugs alter perceived time by affecting the speed of our internal clock and the amount of attention that we pay to time. Whilst such time-altering effects are generally perceived as pleasant and harmless, there is some evidence to suggest that the effects may be long-lasting.
Dorsolateral prefrontal right cortex is considered as the region most involved in time perception.
This distorted sense of time may be caused, in part, by brain cells getting tired, according to a new study. When the brain has been exposed to the same exact time interval too many times, neurons or brain cells get overstimulated and fire less often, the study finds.
First, I'm not really sure what are you asking about, because it looks like the code intentionally does what you describe... When there's time provided, the date fields are assigned nil
. And I don't think that is Chronic is to blame because that's how your code works.
Not knowing your design (why there are separate date & time fields), the types of fields etc., I would suggest starting with a little kludge like this:
if time_provided?(self.natural_date) self.time = Chronic.parse(self.natural_date) self.date = self.time.to_date
or:
self.end_date = Chronic.parse(self.natural_date).to_date if time_provided?(self.natural_date) self.time = Chronic.parse(self.natural_date) end
Or maybe the problem is outside the code you provided: in the part that is responsible for the "because it has no date, it will not show in results" behavior? Maybe you should make the conditions more flexible?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With