Created
May 19, 2011 18:38
-
-
Save rwjblue/981419 to your computer and use it in GitHub Desktop.
Add Time.strptime
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 184e3de1046884dcf6467d19cf73a7eb65f811f5 Mon Sep 17 00:00:00 2001 | |
From: Robert Jackson <[email protected]> | |
Date: Thu, 19 May 2011 18:02:00 -0400 | |
Subject: [PATCH 1/2] Add RubySpec for Time#strptime. | |
--- | |
spec/ruby/library/time/strptime_spec.rb | 12 ++++++++++++ | |
1 files changed, 12 insertions(+), 0 deletions(-) | |
create mode 100644 spec/ruby/library/time/strptime_spec.rb | |
diff --git a/spec/ruby/library/time/strptime_spec.rb b/spec/ruby/library/time/strptime_spec.rb | |
new file mode 100644 | |
index 0000000..8051428 | |
--- /dev/null | |
+++ b/spec/ruby/library/time/strptime_spec.rb | |
@@ -0,0 +1,12 @@ | |
+require File.expand_path('../../../spec_helper', __FILE__) | |
+require 'time' | |
+require 'date' | |
+ | |
+describe "Time.strptime" do | |
+ it "parses input strings in given format" do | |
+ today = Date.today | |
+ Time.utc(2001, 10, 14, 13, 25, 5).should == Time.strptime('2001-10-14 13:25:05 GMT', '%Y-%m-%d %H:%M:%S %Z') | |
+ Time.local(today.year, today.month, today.day, 13, 25, 5).should == Time.strptime('13:25:05', '%H:%M:%S') | |
+ Time.local(today.year, today.month, today.day, 13, 25, 0).should == Time.strptime('13:25', '%H:%M') | |
+ end | |
+end | |
-- | |
1.7.4.4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 25809f1a6c6628aba4b8f5902b14bb11041813db Mon Sep 17 00:00:00 2001 | |
From: Robert Jackson <[email protected]> | |
Date: Thu, 19 May 2011 18:02:21 -0400 | |
Subject: [PATCH 2/2] Implement Time#strptime. | |
--- | |
lib/time.rb | 15 +++++++++++++++ | |
1 files changed, 15 insertions(+), 0 deletions(-) | |
diff --git a/lib/time.rb b/lib/time.rb | |
index 2fc4f5c..6dcfa2c 100644 | |
--- a/lib/time.rb | |
+++ b/lib/time.rb | |
@@ -243,6 +243,21 @@ class Time | |
make_time(year, d.mon, d.mday, d.hour, d.min, d.sec, d.sec_fraction, d.zone, now) | |
end | |
+ # | |
+ # Parses +date+ using Date._strptime and converts it to a Time object. | |
+ # | |
+ # If a block is given, the year described in +date+ is converted by the | |
+ # block. For example: | |
+ # | |
+ # Time.strptime(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y} | |
+ def strptime(date, format, now=self.now) | |
+ d = Date._strptime(date, format) | |
+ raise ArgumentError, "invalid strptime format - `#{format}'" unless d | |
+ year = d[:year] | |
+ year = yield(year) if year && block_given? | |
+ make_time(year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now) | |
+ end | |
+ | |
MonthValue = { | |
'JAN' => 1, 'FEB' => 2, 'MAR' => 3, 'APR' => 4, 'MAY' => 5, 'JUN' => 6, | |
'JUL' => 7, 'AUG' => 8, 'SEP' => 9, 'OCT' =>10, 'NOV' =>11, 'DEC' =>12 | |
-- | |
1.7.4.4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment