Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
79852989
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
79852989
编写于
3月 26, 2009
作者:
J
Jeremy Kemper
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Convert DateTime extension modules to class reopens
上级
34929fed
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
117 addition
and
113 deletion
+117
-113
activesupport/lib/active_support/core_ext/date_time.rb
activesupport/lib/active_support/core_ext/date_time.rb
+6
-5
activesupport/lib/active_support/core_ext/date_time/calculations.rb
...ort/lib/active_support/core_ext/date_time/calculations.rb
+94
-108
activesupport/lib/active_support/core_ext/date_time/zones.rb
activesupport/lib/active_support/core_ext/date_time/zones.rb
+17
-0
未找到文件。
activesupport/lib/active_support/core_ext/date_time.rb
浏览文件 @
79852989
require
'active_support/core_ext/util'
require
'date'
require
'active_support/core_ext/time/behavior'
require
'active_support/core_ext/time/zones'
require
'active_support/core_ext/date_time/calculations'
require
'active_support/core_ext/date_time/zones'
require
'active_support/core_ext/time/behavior'
class
DateTime
include
ActiveSupport
::
CoreExtensions
::
Time
::
Behavior
include
ActiveSupport
::
CoreExtensions
::
Time
::
Zones
end
ActiveSupport
.
core_ext
DateTime
,
%w(calculations conversions)
require
'active_support/core_ext/util'
ActiveSupport
.
core_ext
DateTime
,
%w(conversions)
activesupport/lib/active_support/core_ext/date_time/calculations.rb
浏览文件 @
79852989
require
'rational'
module
ActiveSupport
#:nodoc:
module
CoreExtensions
#:nodoc:
module
DateTime
#:nodoc:
# Enables the use of time calculations within DateTime itself
module
Calculations
def
self
.
included
(
base
)
#:nodoc:
base
.
extend
ClassMethods
base
.
class_eval
do
alias_method
:compare_without_coercion
,
:<=>
alias_method
:<=>
,
:compare_with_coercion
end
end
module
ClassMethods
class
DateTime
class
<<
self
# DateTimes aren't aware of DST rules, so use a consistent non-DST offset when creating a DateTime with an offset in the local zone
def
local_offset
::
Time
.
local
(
2007
).
utc_offset
.
to_r
/
86400
...
...
@@ -37,7 +24,7 @@ def future?
# Seconds since midnight: DateTime.now.seconds_since_midnight
def
seconds_since_midnight
self
.
sec
+
(
self
.
min
*
60
)
+
(
self
.
hour
*
3600
)
sec
+
(
min
*
60
)
+
(
hour
*
3600
)
end
# Returns a new DateTime where one or more of the elements have been changed according to the +options+ parameter. The time options
...
...
@@ -45,14 +32,14 @@ def seconds_since_midnight
# minute is passed, then sec is set to 0.
def
change
(
options
)
::
DateTime
.
civil
(
options
[
:year
]
||
self
.
year
,
options
[
:month
]
||
self
.
month
,
options
[
:day
]
||
self
.
day
,
options
[
:hour
]
||
self
.
hour
,
options
[
:min
]
||
(
options
[
:hour
]
?
0
:
self
.
min
),
options
[
:sec
]
||
((
options
[
:hour
]
||
options
[
:min
])
?
0
:
self
.
sec
),
options
[
:offset
]
||
self
.
offset
,
options
[
:start
]
||
self
.
start
options
[
:year
]
||
year
,
options
[
:month
]
||
month
,
options
[
:day
]
||
day
,
options
[
:hour
]
||
hour
,
options
[
:min
]
||
(
options
[
:hour
]
?
0
:
min
),
options
[
:sec
]
||
((
options
[
:hour
]
||
options
[
:min
])
?
0
:
sec
),
options
[
:offset
]
||
offset
,
options
[
:start
]
||
start
)
end
...
...
@@ -70,7 +57,7 @@ def advance(options)
# Returns a new DateTime representing the time a number of seconds ago
# Do not use this method in combination with x.months, use months_ago instead!
def
ago
(
seconds
)
self
.
since
(
-
seconds
)
since
(
-
seconds
)
end
# Returns a new DateTime representing the time a number of seconds since the instance time
...
...
@@ -120,7 +107,6 @@ def compare_with_coercion(other)
other
=
other
.
to_datetime
unless
other
.
acts_like?
(
:date
)
compare_without_coercion
(
other
)
end
end
end
end
alias_method
:compare_without_coercion
,
:<=>
alias_method
:<=>
,
:compare_with_coercion
end
activesupport/lib/active_support/core_ext/date_time/zones.rb
0 → 100644
浏览文件 @
79852989
class
DateTime
# Returns the simultaneous time in <tt>Time.zone</tt>.
#
# Time.zone = 'Hawaii' # => 'Hawaii'
# DateTime.new(2000).in_time_zone # => Fri, 31 Dec 1999 14:00:00 HST -10:00
#
# This method is similar to Time#localtime, except that it uses <tt>Time.zone</tt> as the local zone
# instead of the operating system's time zone.
#
# You can also pass in a TimeZone instance or string that identifies a TimeZone as an argument,
# and the conversion will be based on that zone instead of <tt>Time.zone</tt>.
#
# DateTime.new(2000).in_time_zone('Alaska') # => Fri, 31 Dec 1999 15:00:00 AKST -09:00
def
in_time_zone
(
zone
=
::
Time
.
zone
)
ActiveSupport
::
TimeWithZone
.
new
(
utc?
?
self
:
getutc
,
::
Time
.
__send__
(
:get_zone
,
zone
))
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录