Ruby on rails 将时间合并到DateTime以更新DateTime
我需要在DateTime中更新时间信息 我得到一个格式为“14”或“14:30”的字符串(例如),因此我需要将其交给时间分析器以获得正确的时间。然后我需要更新Ruby on rails 将时间合并到DateTime以更新DateTime,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我需要在DateTime中更新时间信息 我得到一个格式为“14”或“14:30”的字符串(例如),因此我需要将其交给时间分析器以获得正确的时间。然后我需要更新self.start\u at这是一个已经有时间的日期时间,但我需要更新它 self.start_at_hours = Time.parse(self.start_at_hours) # example 14:30:00 # NEED TO UPDATE self.start_at which is a datetime 我在self上使
self.start\u at
这是一个已经有时间的日期时间,但我需要更新它
self.start_at_hours = Time.parse(self.start_at_hours) # example 14:30:00
# NEED TO UPDATE self.start_at which is a datetime
我在
self上使用了change
方法。从开始,但只需要小时
和分钟
,我不知道该怎么办。你想过做这样的事情吗
time_to_merge = Time.new
date_to_merge = Date.today
merged_datetime = DateTime.new(date_to_merge.year, date_to_merge.month,
date_to_merge.day, time_to_merge.hour,
time_to_merge.min, time_to_merge.sec)
对于替换时间,应该使用.change()
方法,如下所示:
my_datetime = my_datetime.change(hour: my_time.hour, min: my_time.min, sec: my_time.sec)
要添加时间,请尝试转换为秒,然后添加它们:
my_datetime += my_time.seconds_since_midnight.seconds
是的,它成功了。谢谢但我很惊讶,如果不创建一个新对象,就无法直接更改信息。。。这很傻,不是吗?(我来自Python,我喜欢优化资源)嗯?蟒蛇日期时间也是,不是吗?@steenslag不,你可以改变它的属性。为了方便起见,还存在一个datetime.timedelta
,它表示两个日期/小时之间的差异。请@steenslag顺便说一句,我不是在说直接比较(不同PL之间存在差异是可以的,这就是为什么我们知道不同的PL),但在我看来,需要创建第三个对象而不是更改您已经拥有的对象似乎有点傻。@codeshing我想这有点傻,lol.因为我很早就遇到了这个问题,所以我开始只使用DateTime,其他值都为空,只显示需要的内容。这样我以后就可以改变主意了,只有显示器会有所不同;)很高兴我能帮忙:)