Time.local与Time.new
两个方法都返回Time
对象。
irb(main):005:0> Time.new(2020,1,1).class
=> Time
irb(main):006:0> Time.local(2020, 1, 1).class
=> Time
irb(main):007:0> Time.local(2020, 1, 1)
=> 2020-01-01 00:00:00 +0900
irb(main):008:0> Time.new(2020,1,1)
=> 2020-01-01 00:00:00 +0900
irb(main):009:0>
我不知道什么时候该用每种方法。
Time.local
与Time.new
-
Time.local
将在未给定参数的情况下出错,而Time.new
则在未给定任何参数的情况下初始化为当前系统时间。 -
Time.local
将始终返回本地时区中的值。CCD_ 7接受时区参数&如果给定,则返回相应时区中的值。
检查此
2.5.1 :018 > Time.new.zone
=> "IST"
2.5.1 :019 > Time.new
=> 2020-11-18 19:50:30 +0530
2.5.1 :020 > Time.local
Traceback (most recent call last):
3: from /Users/salilgaikwad/.rvm/rubies/ruby-2.5.1/bin/irb:11:in `<main>'
2: from (irb):20
1: from (irb):20:in `local'
ArgumentError (wrong number of arguments (given 0, expected 1..8))
2.5.1 :021 > Time.new(2020,11,18,15,25,0, "+09:00")
=> 2020-11-18 15:25:00 +0900
2.5.1 :022 > Time.local(2020,11,18,15,25,0, "+09:00")
=> 2020-11-18 15:25:00 +0530
看起来您必须将参数传递到#local
,r,而不需要将参数传递给#new
,它将返回当前时间。