From: akr@... Date: 2014-05-03T11:34:16+00:00 Subject: [ruby-core:62323] [ruby-trunk - Bug #9794] DateTime.strptime() doesn't work correctly for '%s %z' Issue #9794 has been updated by Akira Tanaka. tadayoshi funaba wrote: > > ������������������������������������������������������������������������������������������������������������������������%s ��������������������������������������������������� > > ���������������������������������������%s ������������������������������������������ %s ��� UTC ������������������������������������������������������������������������ ������������Time ��������������������������������������� (������������������������UTC) ��������������������������������������� %z ������������������������������������������������ > ������������������������������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������������������������������� > > ������������������������������������������������������������������������������ > > %s ��� %z ������������������������������������������������������������ > > > > ��������������������������������������������������������������������������������������������� > > * %s ������������������������������������������ 1������������������ > > * %z ��������� 1��������������������������������� > > ������������������������������������%s ��������������������������������������� %s ��������� ���������Time ������������������UTC��������������������������������������������� 1970-01-01T00:00:00Z ������������������������������������������������������������������ ������������������������������������������������������������ ���%s ��������������������������������������� %s ���������������������������������������������������������������? ���������������������Time ��������������������������������������������������������������� ������������UTC������������������������������������������������������������������������ ��������������������������������������������������������������������������������������������������������������������������� > ������������������������������������������������������������������ ������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������������������������������������� > > > ��������������������������������������������������������������������������������������������� > > > > git ��������������������������������������������������������������������������������������������������� > > git ��������������������������������������������� ruby ������������������������������������������ > ������������������������������������������������ ������������������������������������������������������������������������ ��������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������� > Time.strptime('0 -0200', '%s %z') > #=> 1969-12-31 22:00:00 -0200 > Time.strptime('20010203 -0200', '%Y%m%d %z') > #=> 2001-02-03 11:00:00 +0900 > > ������������������������������������������������ > ��������� %s ������������������������������������������������������������ > ��������� Time ������������������������������������������������������������������ > ��������������������������������������������������������� ��������������� Time ��������������������������������������������������������������������������������������������������������� ������������������������������ ������������������������������������������������������������������������������������������������������������������������������������������������ ������������������ Time.strptime('20010203 -0200', '%Y%m%d %z') ��������������������������������������������������������� ---------------------------------------- Bug #9794: DateTime.strptime() doesn't work correctly for '%s %z' https://bugs.ruby-lang.org/issues/9794#change-46480 * Author: Felipe Contreras * Status: Rejected * Priority: Low * Assignee: tadayoshi funaba * Category: ext * Target version: * ruby -v: 2.1.1p76 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- 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) -- https://bugs.ruby-lang.org/