Rails日期时间格式“dd / mm / yyyy”

时间:2017-04-12 20:02:20

标签: ruby-on-rails ruby-on-rails-4

我收到"14/04/17 07:00"

等日期

我想只得到这样的日期:14/04/2017

只有小时07:00

我试过这种方式,BTW我知道这是美国时间,它让我17/04/10

DateTime.parse(datetime).strftime("%d/%m/%Y")

Humm我找不到任何地方怎么做?

感谢您的帮助

修改

提出建议:

my_date = DateTime.parse(datetime).strftime("%d/%m/%Y")

如果我在我的终端:

[1] pry(main)> O = Onduleur.last
  Onduleur Load (0.2ms)  SELECT  "onduleurs".* FROM "onduleurs" ORDER BY "onduleurs"."id" DESC LIMIT ?  [["LIMIT", 1]]
=> #<Onduleur:0x007fa6b70186e0
 id: 144,
 identifier: 2,
 datetime: "11/04/17 23:00",
 energy: 0,
 created_at: Wed, 12 Apr 2017 15:17:04 UTC +00:00,
 updated_at: Wed, 12 Apr 2017 15:17:04 UTC +00:00>
[2] pry(main)> my_date = DateTime.parse(O.datetime).strftime("%d/%m/%Y")
=> "17/04/2011"
[3] pry(main)>

2 个答案:

答案 0 :(得分:0)

要阅读,您可以使用strptime并指定格式:

datetime = "14/04/17 07:00"
DateTime.strptime(datetime, "%d/%m/%y %R")
=> Wed, 14 Apr 0017 07:00:00 +0000

解释

%d - Day of the month, zero-padded (01..31)
%m - Month of the year, zero-padded (01..12)
%y - year % 100 (00..99)
%R - 24-hour time (%H:%M)

要获取日期,您可以使用to_date将DateTime对象转换为Date对象,或者直接在DateTime上使用.strftime("%d/%m/%Y")来获取String。

[47] pry(main)> a
=> Fri, 14 Apr 2017 07:00:00 +0000
[48] pry(main)> a.to_date
=> Fri, 14 Apr 2017
[49] pry(main)> a.strftime("%d/%m/%Y")
=> "14/04/2017"
[50] pry(main)> a.strftime("%R")
=> "07:00"

完整文档here。此外,strftime docs

还提供了完整的格式指令列表

答案 1 :(得分:0)

您可以使用所需数据设置变量

datetime = "2017-04-12 10:30:14"

my_date = DateTime.parse(datetime).strftime("%d/%m/%Y")
my_hour = DateTime.parse(datetime).strftime("%H:%M")

puts my_date
puts my_hour

输出:

  

2017年12月4日
  10:30

修改

如果您有此格式日期( 11/04/2017 23:00 ),您可以尝试使用.to_time方法

require 'active_support/core_ext/string'

datetime2 = "11/04/2017 23:00".to_time

my_date2 = datetime2.strftime("%d/%m/%Y")
my_hour2 = datetime2.strftime("%H:%M")

puts my_date2
puts my_hour2