updated based on date2 3.9.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
448154a7da
commit
7f0f585f32
@ -1,3 +1,7 @@
|
|||||||
|
Mon Sep 4 21:39:42 2006 Tadayoshi Funaba <tadf@dotrb.org>
|
||||||
|
|
||||||
|
* lib/date.rb, lib/date/format.rb: updated based on date2 3.9.
|
||||||
|
|
||||||
Mon Sep 4 21:14:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Mon Sep 4 21:14:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* time.c (time_strftime): include nul character. fixed: [ruby-dev:29422]
|
* time.c (time_strftime): include nul character. fixed: [ruby-dev:29422]
|
||||||
|
@ -966,7 +966,7 @@ class Date
|
|||||||
|
|
||||||
private :hour, :min, :sec, :sec_fraction
|
private :hour, :min, :sec, :sec_fraction
|
||||||
|
|
||||||
def zone() strftime('%Z') end
|
def zone() strftime('%:z') end
|
||||||
|
|
||||||
private :zone
|
private :zone
|
||||||
|
|
||||||
|
@ -116,13 +116,13 @@ class Date
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.num_pattern? (s) # :nodoc:
|
def self.num_pattern? (s) # :nodoc:
|
||||||
/\A%[EO]?[CDdeFGgHIjkLlMmNQRrSsTUuVvWwXxYy\d]/ =~ s ||/\A\d/ =~ s
|
/\A%[EO]?[CDdeFGgHIjkLlMmNQRrSsTUuVvWwXxYy\d]/ =~ s || /\A\d/ =~ s
|
||||||
end
|
end
|
||||||
|
|
||||||
private_class_method :num_pattern?
|
private_class_method :num_pattern?
|
||||||
|
|
||||||
def self._strptime_i(str, fmt, e) # :nodoc:
|
def self._strptime_i(str, fmt, e) # :nodoc:
|
||||||
fmt.scan(/%[EO]?(.)|(.)/m) do |s, c|
|
fmt.scan(/%[EO]?(:{1,3}z|.)|(.)/m) do |s, c|
|
||||||
if s
|
if s
|
||||||
case s
|
case s
|
||||||
when 'A', 'a'
|
when 'A', 'a'
|
||||||
@ -272,7 +272,7 @@ class Date
|
|||||||
return unless (0..99) === val
|
return unless (0..99) === val
|
||||||
e.year = val
|
e.year = val
|
||||||
e._cent ||= if val >= 69 then 19 else 20 end
|
e._cent ||= if val >= 69 then 19 else 20 end
|
||||||
when 'Z', 'z'
|
when 'Z', /\A:{0,3}z/
|
||||||
return unless str.sub!(/\A((?:gmt|utc?)?[-+]\d+(?:[,.:]\d+(?::\d+)?)?
|
return unless str.sub!(/\A((?:gmt|utc?)?[-+]\d+(?:[,.:]\d+(?::\d+)?)?
|
||||||
|[a-z.\s]+(?:standard|daylight)\s+time\b
|
|[a-z.\s]+(?:standard|daylight)\s+time\b
|
||||||
|[a-z]+(?:\s+dst)?\b
|
|[a-z]+(?:\s+dst)?\b
|
||||||
@ -891,8 +891,9 @@ class Date
|
|||||||
end
|
end
|
||||||
|
|
||||||
def strftime(fmt='%F')
|
def strftime(fmt='%F')
|
||||||
fmt.gsub(/%[EO]?(.)/m) do |_|
|
fmt.gsub(/%[EO]?(:{1,3}z|.)/m) do |_|
|
||||||
case $1
|
s = $1
|
||||||
|
case s
|
||||||
when 'A'; DAYNAMES[wday]
|
when 'A'; DAYNAMES[wday]
|
||||||
when 'a'; ABBR_DAYNAMES[wday]
|
when 'a'; ABBR_DAYNAMES[wday]
|
||||||
when 'B'; MONTHNAMES[mon]
|
when 'B'; MONTHNAMES[mon]
|
||||||
@ -945,12 +946,26 @@ class Date
|
|||||||
when 'Y'; '%.4d' % year
|
when 'Y'; '%.4d' % year
|
||||||
when 'y'; '%02d' % (year % 100)
|
when 'y'; '%02d' % (year % 100)
|
||||||
when 'Z'; (if offset.zero? then 'Z' else strftime('%z') end)
|
when 'Z'; (if offset.zero? then 'Z' else strftime('%z') end)
|
||||||
when 'z' # ID
|
when /\A(:{0,3})z/ # ID
|
||||||
|
t = $1.size
|
||||||
p = if offset < 0 then '-' else '+' end
|
p = if offset < 0 then '-' else '+' end
|
||||||
of = offset.abs
|
of = offset.abs
|
||||||
hh, fr = of.divmod(1.to_r/24)
|
hh, fr = of.divmod(1.to_r/24)
|
||||||
mm = fr / (1.to_r/1440)
|
mm, fr = fr.divmod(1.to_r/1440)
|
||||||
'%s%02d%02d' % [p, hh, mm]
|
ss, fr = fr.divmod(1.to_r/86400)
|
||||||
|
if t == 3
|
||||||
|
if ss.nonzero? then t = 2 elsif mm.nonzero? then t = 1 end
|
||||||
|
end
|
||||||
|
case t
|
||||||
|
when 0
|
||||||
|
'%s%02d%02d' % [p, hh, mm]
|
||||||
|
when 1
|
||||||
|
'%s%02d:%02d' % [p, hh, mm]
|
||||||
|
when 2
|
||||||
|
'%s%02d:%02d:%02d' % [p, hh, mm, ss]
|
||||||
|
when 3
|
||||||
|
'%s%02d' % [p, hh]
|
||||||
|
end
|
||||||
when '%'; '%'
|
when '%'; '%'
|
||||||
when '+'; strftime('%a %b %e %H:%M:%S %Z %Y') # TZ
|
when '+'; strftime('%a %b %e %H:%M:%S %Z %Y') # TZ
|
||||||
when '1'
|
when '1'
|
||||||
@ -969,7 +984,7 @@ class Date
|
|||||||
end
|
end
|
||||||
strftime('%F')
|
strftime('%F')
|
||||||
else
|
else
|
||||||
$1
|
s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -980,16 +995,66 @@ class Date
|
|||||||
|
|
||||||
alias_method :ctime, :asctime
|
alias_method :ctime, :asctime
|
||||||
|
|
||||||
|
=begin
|
||||||
|
def iso8601() strftime('%F') end
|
||||||
|
|
||||||
|
def rfc3339() iso8601 end
|
||||||
|
|
||||||
|
def rfc2822() strftime('%a, %d %b %Y %T %z') end
|
||||||
|
|
||||||
|
alias_method :rfc822, :rfc2822
|
||||||
|
|
||||||
|
def jisx301
|
||||||
|
if jd < 2405160
|
||||||
|
iso8601
|
||||||
|
else
|
||||||
|
case jd
|
||||||
|
when 2405160...2419614
|
||||||
|
g = 'M%02d' % (year - 1867)
|
||||||
|
when 2419614...2424875
|
||||||
|
g = 'T%02d' % (year - 1911)
|
||||||
|
when 2424875...2447535
|
||||||
|
g = 'S%02d' % (year - 1925)
|
||||||
|
else
|
||||||
|
g = 'H%02d' % (year - 1988)
|
||||||
|
end
|
||||||
|
g + strftime('.%m.%d')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
=end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
class DateTime < Date
|
class DateTime < Date
|
||||||
|
|
||||||
def self._strptime(str, fmt='%FT%T%Z')
|
def self._strptime(str, fmt='%FT%T%z')
|
||||||
super(str, fmt)
|
super(str, fmt)
|
||||||
end
|
end
|
||||||
|
|
||||||
def strftime(fmt='%FT%T%Z')
|
def strftime(fmt='%FT%T%:z')
|
||||||
super(fmt)
|
super(fmt)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
=begin
|
||||||
|
def iso8601_timediv(n) # :nodoc:
|
||||||
|
strftime('T%T' +
|
||||||
|
if n < 1
|
||||||
|
''
|
||||||
|
else
|
||||||
|
'.%0*d' % [n, (sec_fraction / (1.to_r/86400/(10**n)))]
|
||||||
|
end +
|
||||||
|
'%Z')
|
||||||
|
end
|
||||||
|
|
||||||
|
private :iso8601_timediv
|
||||||
|
|
||||||
|
def iso8601(n=0)
|
||||||
|
super() + iso8601_timediv(n)
|
||||||
|
end
|
||||||
|
|
||||||
|
def jisx301(n=0)
|
||||||
|
super() + iso8601_timediv(n)
|
||||||
|
end
|
||||||
|
=end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user