简体   繁体   English

Ruby和Rails“Date.today”格式

[英]Ruby and Rails “Date.today” format

In IRB, if I run following commands: 在IRB中,如果我运行以下命令:

require 'date'
Date.today

I get the following output: 我得到以下输出:

=> #<Date: 2015-09-26 ((2457292j,0s,0n),+0s,2299161j)> 

But in Rails console, if I run Date.today , I get this: 但是在Rails控制台中,如果我运行Date.today ,我会得到这个:

=> Sat, 26 Sep 2015 

I looked at Rails' Date class but can't find how Rails' Date.today displays the output differently than Ruby's output. 我查看了Rails的Date类,但无法找到Rails的Date.today如何以不同于Ruby的输出显示输出。

Can anybody tell, in Rails how Date.today or Date.tomorrow formats the date to display nicely? 任何人都可以在Rails中告诉Date.todayDate.tomorrow如何格式化日期以便很好地显示?

The answer to your question is ActiveSupport 's core extension to Date class. 您的问题的答案是ActiveSupportDate的核心扩展 It overrides the default implementations of inspect and to_s : 它会覆盖inspectto_s的默认实现:

# Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005"
def readable_inspect
  strftime('%a, %d %b %Y')
end
alias_method :default_inspect, :inspect
alias_method :inspect, :readable_inspect

Command line example: 命令行示例:

ruby-2.2.0 › irb
>> require 'date'
=> true
>> Date.today
=> #<Date: 2015-09-27 ((2457293j,0s,0n),+0s,2299161j)>
>> require 'active_support/core_ext/date'
=> true
>> Date.today
=> Sun, 27 Sep 2015

Rails' strftime or to_s methods should do what you need. Rails的strftimeto_s方法应该做你需要的。

For example, using to_s : 例如,使用to_s

2.2.1 :004 > Date.today.to_s(:long)
 => "September 26, 2015" 
2.2.1 :005 > Date.today.to_s(:short)
 => "26 Sep" 

If you run this: 如果你运行这个:

require 'date'
p Date.today.strftime("%a, %e %b %Y")

You'll get this: "Sat, 26 Sep 2015" 你会得到这个:“星期六,2015年9月26日”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM