登录 主页

rails 不修改config/application显示time.now为北京时间

2023-08-14 08:22PM

想要把 Time.now 转换为北京时间,需要先把它转换为东八区时间。

可以使用 ActiveSupport::TimeZone 类来完成此操作。

以下是具体操作步骤:

    在 config/application.rb 中设置默认时区为北京时间:

config.time_zone = 'Beijing'

    在controller使用 in_time_zone 方法将当前时间转换为北京时间,并格式化为字符串:

@time = Time.now.in_time_zone.strftime("%H:%M:%S")

这样就可以将当前时间转换为北京时间,并以指定格式显示出来。

原因:

要显示北京时间,可以使用ActiveSupport库中的TimeWithZone和in_time_zone方法来实现。首先需要将当前时间转化为北京时区,然后再格式化为字符串,示例如下:

require 'active_support/time'

beijing_time = Time.now.in_time_zone('Beijing')
formatted_time = beijing_time.strftime('%H:%M:%S')

puts formatted_time # 输出格式化后的北京时间

在上面的代码中,我们先使用require 'active_support/time'导入ActiveSupport库,然后使用in_time_zone方法将当前时间转化为北京时区的时间。in_time_zone方法需要传入一个时区名,这里我们使用字符串'Beijing'来表示北京时区。转化后的时间将自动考虑到北京的夏令时、冬令时等因素。

最后,我们使用strftime方法将北京时间格式化为字符串,格式为'%H:%M:%S'表示小时、分钟和秒数。将格式化后的时间输出,即可得到北京时间的字符串表示。

 

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论