Project

General

Profile

Feature #9794

DateTime.strptime() doesn't work correctly for '%s %z'

Added by felipec (Felipe Contreras) over 6 years ago. Updated about 6 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
[ruby-core:62286]

Description

Time.strptime() works correctly:

Time.strptime('0 +0100', '%s %z').strftime('%s %z')
=> "0 +0100"

But DateTime.strptime() doesn't:

DateTime.strptime('0 +0100', '%s %z').strftime('%s %z')
=> "0 +0000"

In Rubinious it does work correctly:

DateTime.strptime('0 +0100', '%s %z').strftime('%s %z')
=> "0 +0100"

This make the RubySL date space fail:

DateTime#strptime parses seconds and timezone correctly FAILED
Expected "1970-01-01T00:00:00+00:00"
 to equal "1970-01-01T01:00:00+01:00"

In addition, both C and perl preserver the offset correctly when doing '%s %z'.

So it's very clear DateTime.strptime() has to be fixed.

Patch attached.


Files

0001-datetime-fix-strptime-s-z.patch (1.94 KB) 0001-datetime-fix-strptime-s-z.patch Fix felipec (Felipe Contreras), 05/02/2014 10:20 AM

Related issues

Related to Ruby master - Bug #7445: strptime('%s %z') doesn't workRejectedtadf (tadayoshi funaba)11/27/2012Actions

Also available in: Atom PDF