Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将字符串转换为特定时区的日期_Ruby On Rails_Ruby_Date_Ruby On Rails 4_Timezone - Fatal编程技术网

Ruby on rails 将字符串转换为特定时区的日期

Ruby on rails 将字符串转换为特定时区的日期,ruby-on-rails,ruby,date,ruby-on-rails-4,timezone,Ruby On Rails,Ruby,Date,Ruby On Rails 4,Timezone,我需要将字符串转换为特定时区中的日期 例如 我需要美国/芝加哥时区的最后日期。我怎样才能做到这一点 我需要在期望的时区中实现日期,而不是在期望的时区中实现时间 Time.now.in_Time_zone(“东部时间(美国和加拿大)”)将提供ActiveSupport::TimeWithZone格式,而我需要所需时区中的日期格式。使用日期时间: from = "June 13, 2015" DateTime.strptime(from,"%b %d, %Y").in_time_zone("Ame

我需要将字符串转换为特定时区中的日期

例如

我需要美国/芝加哥时区的最后日期。我怎样才能做到这一点

我需要在期望的时区中实现日期,而不是在期望的时区中实现时间

Time.now.in_Time_zone(“东部时间(美国和加拿大)”)将提供ActiveSupport::TimeWithZone格式,而我需要所需时区中的日期格式。

使用日期时间:

from = "June 13, 2015"

DateTime.strptime(from,"%b %d, %Y").in_time_zone("America/Chicago")
=> Fri, 12 Jun 2015 19:00:00 CDT -05:00
请注意,它显示的时间是19:00。这是因为没有指定时间,所以它认为您指的是00:00UTC,即19:00CDT

实现您想要做的事情的一种方法是:

Date.strptime(from.strip,"%b %d, %Y").in_time_zone("America/Chicago").to_datetime
=> Sat, 13 Jun 2015 00:00:00 -0500
这将在该日期的午夜为您提供一个DateTime对象。如果你想的话,你可以增加时间到达那天的某个特定时间

my_date = Date.strptime(from.strip,"%b %d, %Y").in_time_zone("America/Chicago").to_datetime
  => Sat, 13 Jun 2015 00:00:00 -0500

my_date.in_time_zone("UTC")
  => Sat, 13 Jun 2015 05:00:00 UTC +00:00

my_date + 8.hours
  => Sat, 13 Jun 2015 08:00:00 -0500

我想你需要提供时间(而不是日期)来转换到所需的时区。我可能会使用DateTime。你的问题很模糊。日期实际上没有时区。时间有时区。你想用这个日期做什么?@Beartech我需要根据选定的管理时区中选定的日期筛选数据。
my_date = Date.strptime(from.strip,"%b %d, %Y").in_time_zone("America/Chicago").to_datetime
  => Sat, 13 Jun 2015 00:00:00 -0500

my_date.in_time_zone("UTC")
  => Sat, 13 Jun 2015 05:00:00 UTC +00:00

my_date + 8.hours
  => Sat, 13 Jun 2015 08:00:00 -0500