Project

General

Profile

Feature #18331

Updated by sawa (Tsuyoshi Sawada) over 2 years ago

I remember that, once, Matz suggested a new literal notation for date/time, but he later withdrew it. It seems like introducing new syntax at this point is less realistic. But I believe that many people have wanted a simple way to create a date/time object. 

 I propose `Kernel.Time` or `Kernel#Time`, in much of the same way as `Kernel.#Integer`, `Kernel.#Float`, `Kernel.#Complex` and others. It should take a string as the first required argument and some optional keyword arguments. 

 ```rb 
 Time("2021-11-13T21:21:18.027294 TIme("2021-11-13T21:21:18.027294 +0900") # => 2021-11-13 21:21:18.027294 +0900 
 Time("2021-11-13 TIme("2021-11-13 21:21:18.027294 +0900") # => 2021-11-13 21:21:18.027294 +0900 
 Time("foo", exception: false) # => nil 
 ``` 

 I leave out the specifics. There should be room for debate. 

 I wish the features nobu implemented in https://bugs.ruby-lang.org/issues/18033 for `Time.new` can be carried over to `Kernel.#Time`. 

Back