summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-05-22 12:44:45 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-05-22 12:44:45 +0000
commitb4672c518ed483c3733d9868062b82c0b775aae3 (patch)
tree29895df7be79580c689c6c70073eebc1a897406f /lib
parentca823d61e79c6399913dbb02fc4fdd14e68e7d0b (diff)
updated to the new version (based on date2 2.6.1).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@2491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/parsedate.rb62
1 files changed, 31 insertions, 31 deletions
diff --git a/lib/parsedate.rb b/lib/parsedate.rb
index 7fc75cf0c2..d5170f709c 100644
--- a/lib/parsedate.rb
+++ b/lib/parsedate.rb
@@ -1,5 +1,5 @@
-# parsedate3.rb: Written by Tadayoshi Funaba 2000, 2001
-# $Id: parsedate3.rb,v 1.3 2001-01-18 12:09:47+09 tadf Exp $
+# parsedate3.rb: Written by Tadayoshi Funaba 2000-2002
+# $Id: parsedate3.rb,v 1.6 2002-05-16 20:03:28+09 tadf Exp $
module ParseDate
@@ -19,6 +19,8 @@ module ParseDate
def parsedate(date, cyear=false)
date = date.dup
+ date.gsub!(/[^-+.\/:0-9a-z]+/ino, ' ')
+
# day
if date.sub!(/(#{DAYPAT})\S*/ino, ' ')
wday = DAYS[$1.downcase]
@@ -29,17 +31,15 @@ module ParseDate
/(\d+):(\d+)(?::(\d+))?
(?:
\s*
- ([ap])\.?m\.?
- \b
+ ([ap])(?:m\b|\.m\.)
)?
(?:
\s*
(
- [a-z]+(?:\s+dst)?
+ [a-z]+(?:\s+dst)?\b
|
[-+]\d+(?::?\d+)
)
- \b
)?
/inox,
' ')
@@ -62,7 +62,7 @@ module ParseDate
(#{MONTHPAT})\S*
(?:
\s+
- (\d+)
+ (-?\d+)
)?
/inox,
' ')
@@ -77,7 +77,7 @@ module ParseDate
(\d+)\S*
(?:
\s+
- (\d+)
+ (-?\d+)
)?
/inox,
' ')
@@ -86,7 +86,7 @@ module ParseDate
year = $3.to_i if $3
# iso
- elsif date.sub!(/(\d+)-(\d+)-(\d+)/no, ' ')
+ elsif date.sub!(/([-+]?\d+)-(\d+)-(-?\d+)/no, ' ')
year = $1.to_i
mon = $2.to_i
mday = $3.to_i
@@ -102,14 +102,14 @@ module ParseDate
year, mon, mday = $2.to_i + e, $3.to_i, $4.to_i
# vms
- elsif date.sub!(/(\d+)-(#{MONTHPAT})\S*-(\d+)/ino, ' ')
+ elsif date.sub!(/(-?\d+)-(#{MONTHPAT})[^-]*-(-?\d+)/ino, ' ')
mday = $1.to_i
mon = MONTHS[$2.downcase]
year = $3.to_i
year, mon, mday = mday, mon, year if $1.size >= 4
# sla
- elsif date.sub!(%r|(\d+)/(\d+)(?:/(\d+))?|no, ' ')
+ elsif date.sub!(%r|(-?\d+)/(\d+)(?:/(-?\d+))?|no, ' ')
mon = $1.to_i
mday = $2.to_i
year = $3.to_i if $3
@@ -117,7 +117,7 @@ module ParseDate
# ddd
elsif date.sub!(
- /(\d{4,14})
+ /([-+]?)(\d{4,14})
(?:
\s*
T?
@@ -135,35 +135,35 @@ module ParseDate
)?
/nox,
' ')
- case $1.size
+ case $2.size
when 4
- mon = $1[ 0, 2].to_i
- mday = $1[ 2, 2].to_i
+ mon = $2[ 0, 2].to_i
+ mday = $2[ 2, 2].to_i
when 6
- year = $1[ 0, 2].to_i
- mon = $1[ 2, 2].to_i
- mday = $1[ 4, 2].to_i
+ year = ($1 + $2[ 0, 2]).to_i
+ mon = $2[ 2, 2].to_i
+ mday = $2[ 4, 2].to_i
when 8, 10, 12, 14
- year = $1[ 0, 4].to_i
- mon = $1[ 4, 2].to_i
- mday = $1[ 6, 2].to_i
- hour = $1[ 8, 2].to_i if $1.size >= 10
- min = $1[10, 2].to_i if $1.size >= 12
- sec = $1[12, 2].to_i if $1.size >= 14
+ year = ($1 + $2[ 0, 4]).to_i
+ mon = $2[ 4, 2].to_i
+ mday = $2[ 6, 2].to_i
+ hour = $2[ 8, 2].to_i if $2.size >= 10
+ min = $2[10, 2].to_i if $2.size >= 12
+ sec = $2[12, 2].to_i if $2.size >= 14
end
- if $2
- case $2.size
+ if $3
+ case $3.size
when 2, 4, 6
- hour = $2[ 0, 2].to_i
- min = $2[ 2, 2].to_i if $2.size >= 4
- sec = $2[ 4, 2].to_i if $2.size >= 6
+ hour = $3[ 0, 2].to_i
+ min = $3[ 2, 2].to_i if $3.size >= 4
+ sec = $3[ 4, 2].to_i if $3.size >= 6
end
end
- zone = $3
+ zone = $4
end
if cyear and year
- if year < 100
+ if year >= 0 and year <= 99
if year >= 69
year += 1900
else