Ruby-on-rails 将字符串转换为特定的日期时间格式?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6070957/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
convert string to specific datetime format?
提问by krunal shah
String
细绳
"2011-05-19 10:30:14"
To
到
Thu May 19 10:30:14 UTC 2011
How can I convert specific string to this Date format ?
如何将特定字符串转换为此日期格式?
回答by P?r Wieslander
require 'date'
date = DateTime.parse("2011-05-19 10:30:14")
formatted_date = date.strftime('%a %b %d %H:%M:%S %Z %Y')
See strftime()for more information about formatting dates.
有关格式化日期的更多信息,请参阅strftime()。
回答by Dipil
"2011-05-19 10:30:14".to_time
"2011-05-19 10:30:14".to_time
回答by Rubyist
No need to apply anything. Just add this code at the end of variable to which date is assigned. For example
无需申请任何东西。只需在指定日期的变量末尾添加此代码即可。例如
@todaydate = "2011-05-19 10:30:14"
@todaytime.to_time.strftime('%a %b %d %H:%M:%S %Z %Y')
You will get proper format as you like. You can check this at Rails Console
您将根据需要获得正确的格式。您可以在 Rails 控制台上查看
Loading development environment (Rails 3.0.4)
ruby-1.9.2-p136 :001 > todaytime = "2011-05-19 10:30:14"
=> "2011-05-19 10:30:14"
ruby-1.9.2-p136 :002 > todaytime
=> "2011-05-19 10:30:14"
ruby-1.9.2-p136 :003 > todaytime.to_time
=> 2011-05-19 10:30:14 UTC
ruby-1.9.2-p136 :008 > todaytime.to_time.strftime('%a %b %d %H:%M:%S %Z %Y')
=> "Thu May 19 10:30:14 UTC 2011"
Try 'date_format' gem to show date in different format.
尝试使用 'date_format' gem 以不同格式显示日期。
回答by tokhi
More formats:
更多格式:
require 'date'
date = "01/07/2016 09:17AM"
DateTime.parse(date).strftime("%A, %b %d")
#=> Friday, Jul 01
DateTime.parse(date).strftime("%m/%d/%Y")
#=> 07/01/2016
DateTime.parse(date).strftime("%m-%e-%y %H:%M")
#=> 07- 1-16 09:17
DateTime.parse(date).strftime("%b %e")
#=> Jul 1
DateTime.parse(date).strftime("%l:%M %p")
#=> 9:17 AM
DateTime.parse(date).strftime("%B %Y")
#=> July 2016
DateTime.parse(date).strftime("%b %d, %Y")
#=> Jul 01, 2016
DateTime.parse(date).strftime("%a, %e %b %Y %H:%M:%S %z")
#=> Fri, 1 Jul 2016 09:17:00 +0200
DateTime.parse(date).strftime("%Y-%m-%dT%l:%M:%S%z")
#=> 2016-07-01T 9:17:00+0200
DateTime.parse(date).strftime("%I:%M:%S %p")
#=> 09:17:00 AM
DateTime.parse(date).strftime("%H:%M:%S")
#=> 09:17:00
DateTime.parse(date).strftime("%e %b %Y %H:%M:%S%p")
#=> 1 Jul 2016 09:17:00AM
DateTime.parse(date).strftime("%d.%m.%y")
#=> 01.07.16
DateTime.parse(date).strftime("%A, %d %b %Y %l:%M %p")
#=> Friday, 01 Jul 2016 9:17 AM
回答by Mohamed Yakout
This another helpful code:
这是另一个有用的代码:
"2011-05-19 10:30:14".to_datetime.strftime('%a %b %d %H:%M:%S %Z %Y')
回答by arnep
Use DATE_FORMATfrom Date Conversions:
使用DATE_FORMAT从日期转换:
In your initializer:
在您的初始化程序中:
DateTime::DATE_FORMATS[:my_date_format] = "%a %b %d %H:%M:%S %Z %Y"
In your view:
在您看来:
date = DateTime.parse("2011-05-19 10:30:14")
date.to_formatted_s(:my_date_format)
date.to_s(:my_date_format)
回答by krunal shah
<%= string_to_datetime("2011-05-19 10:30:14") %>
def string_to_datetime(string,format="%Y-%m-%d %H:%M:%S")
DateTime.strptime(string, format).to_time unless string.blank?
end

