Issue #7445 has been updated by tadf (tadayoshi funaba).


俺ã?®è?±è????¯é????¨ã????ªã???????????????????¥æ?¬è????§æ?¸ã????¦ã???????¾ã?????

?????ªã???????? DateTime ??®è©±????????¦ã?????äº????å¿??????ªã????§ä???????????

?????§ã?§ã????®å????«æ?¸ã????¦ã?????äº?????????®ã?¾ã?¾é????¨ã????????????§ã?¯ã???????¾ã?????????????§ã??
???è§£ã??æ·±ã?????????????®å???????«é???¾ã????????å½????????????§ã?????常è????§ã?????

more(1) ??????å¼????
>SEE ALSO
>     vi(1), less(1)

more ??? less ??¨ç??価ã??? 並å???????¦ã?¾ã????­ã??

?????????????????????è¨???£ã??ç­???§ã??????????©ã???????ªã?????è¨????????????? '%s %z' ???å®???§ã?«æ??
??½ã???????ªã????¦ä????¯ã???????¾ã?????????????ªã?????è¨???£ã?¦ã???????®ã?¯ã??æ§??????¬ã????«ã?§ã??読ã??
????????¨ã?????????????§ã???????????????????¯ã??_strptime ??§å?ºæ?¥ã?¾ã????¨èª¬??????¾ã???????????
????????? C ??®å?´å???????¿ã?¤ã????¾ã?¼ã?³ã?®ã?¡ã?³ã????¼ã?¯æ??æº???§ã?¯ã???????¾ã???????????????????¿ã??
?????¾ã?¼ã?³ã?????å·®ã?«ã?¤ã????¦å¯¾ç§°ã?§ã???????¾ã??????????ªã????ªã?????ruby ??®ç????¿è¾¼??¿ã?¯ã?©ã??
Time ??§ã?©ã?®ã???????«ã???????®ã??è¦??????¦ä???????????

lcoaltime(3) ??????å¼????
>           struct tm {
>               int tm_sec;         /* seconds */
>               int tm_min;         /* minutes */
>               int tm_hour;        /* hours */
>               int tm_mday;        /* day of the month */
>               int tm_mon;         /* month */
>               int tm_year;        /* year */
>               int tm_wday;        /* day of the week */
>               int tm_yday;        /* day in the year */
>               int tm_isdst;       /* daylight saving time */
>           };

DateTime ????????§ã?ªã????çµ???¿è¾¼??¿ã?¯ã?©ã?¹ã?? Time ??????C ??®ã?©ã?¤ã????©ã?ªã??????????§ã??
??????æ­£ã????????????¥ã???????«ã?¯ã??æ§??????¬ã????«ã???????§ã?ªã?????????®æ???³ã??è§£é???????ªã?????
??°ã?ªã????¾ã?????????????¾ã?????è¦?ç´????????????????å½???¦ã?«ã????¦ã????ªã???????®ã?¯ç?¡è???????????äº?
??«ã?ªã????¾ã??????????ªã????¯ã?¾ã?£ã????????????«æ??ä»??????ªã????µã??????????¦è?¡éº»????????¦ã????¾ã?????

%s ??? time_t ???????³ã????¦ã????¾ã????????struct tm ??«ã?¯ã????®ã???????ªã?¡ã?³ã????¼ã?¯ã?ªã??
??®ã?§å???????«ã?¯ã?????è§£ã???????¦è?ªæ??®å?°æ?¹æ????¨ã????¦æ?¼ç???????????ç­???§ã?????ä»®ã?«æ??å·®ã??
??¼ç??????????¦ã???????¨ã????¦ã??????????¯å?????????????????äº??????¨æ????¥ã?ªã??????????°ã???????¾ã????????
?????®æ??å·®ã????°æ?¹æ????®ã???????¨ä????´ã????¦ã???????°ã???????§ã??????????????????????¨ã?¯é???????¾ã??
????????????????????¼ç????????????????©ã???????¯å??è£?次第??§ã???????????mktime(3) ???????????????
è¦?????????°è¾»è¤????????????¾ã????????????????«ã????¦ã???????®ã??????????®æ?¯è???????¯æ?ªå??義ã????¨æ??
?????¾ã?????俺é?????è­°è??????????©ã?¯ã?ªã????§ã?????

#define _XOPEN_SOURCE
#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[]) {
  struct tm tm;
  char buf[100];
  strptime(argv[1], argv[2], &tm);
  strftime(buf, 100, "%F %T %z", &tm);
  printf("%s\n", buf);
  return 0;
}

$ ./a.out '3 +0100' '%s %z'
1970-01-01 09:00:03 +0100
$ ./a.out '3 -0100' '%s %z'
1970-01-01 09:00:03 -0100

?????®å?´å????????????????«æ??å·®ã?¯èª­??¿ã????¾ã????¦ã?¯ã????¾ã????????

$ date -d '1970-01-01 09:00:03 +0100' +%s
28803
$ date -d '1970-01-01 09:00:03 -0100' +%s
36003

??§ã???????????読ã????§ã??????????§ã?????対称??§ã????©ã????¨ã????????話ã???????ªã???????§ã?????

DateTime ??? Time ??®ã?¤ã?³ã?¹ã?¿ã?³ã?¹ã?¯ã?ªã????¸ã?§ã?¯ã????ªã?®ã?§ã??mktime(3) ?????ªã?????
????????¤ã?§ã????¾ã?????????????¾ã?????è¦?ç´????å­??????§ã????®ã?¾ã?¾ã?«ã????¦ã???????? DateTime???
Time ??§ã?¯ã??????????¾ã??????????ªã????¸ã?§ã?¯ã????? struct tm ??§ã?¯ã???????¾ã?????????????ªã??
???è¨???£ã?¦ã?????äº???¯å???????«ã?? C ??§ã??æ©???½ã????¦ã????ªã????????DateTime ??§ã???????®ã?????
??ªç?¨æ????????????¤ã??????????ªã????§ã??????????ªã????®è????£ã?¦ã??äº???¯ã?¦ã????§å?ºé????®ã?§ã?????

> Time.strptime('1 +1200', '%s %z')
#=> 1970-01-01 09:00:01 +0900
> Time.strptime('1 +2400', '%s %z')
#=> 1970-01-01 09:00:01 +0900

å®??????®æ?????????³ã?®ã?ªã??çµ???¿å?????????¯ä????«ã??????????¾ã?????????????«å¯¾?????¦ã???????¡ã?????
æ­£ã?????è§£é???????¨æ????????????¨ã?¯æ???????¾ã?????????????®ä»¶??§ã????ªã????®è?????????????«ä¿®æ­£ã??
?????°ã??????????§å????§ã?ªå¯¾ç§°æ?§ã??å¾?????????????????§ã?¯ã?ªã????®ã?§ã?????

> Time.strptime('1 0', '%s %w').wday
#=> 4

> Time.strptime('1 PM', '%s %p').hour
#=> 9

> DateTime.new(2001,2,3,16,5,6).strftime('%F %T %p')
#=> "2001-02-03 16:05:06 PM"
> DateTime.strptime('%F %T %p', "2001-02-03 16:05:06 PM")
ArgumentError: invalid date

俺ã?? '%s %z' ??ªã????¦æ?¸å???®æ?¥ä????¯è?????äº????????????¾ã??????????¿ã?¤ã????¾ã?¼ã?³ã?????å·®ã??
å¿?è¦???ªã?®ã?¯ã????¬è³ª?????«ã??????????°æ?¹æ?????????????§ã???????????%s ???示ã????¦ã???????®ã?¯ã??
time_t ??§ã??time_t ??«ã?¯ã?¿ã?¤ã????¾ã?¼ã?³ã?????å·®ã?®æ????±ã?¯ã???????¾ã????????Unix ??§ã?¯ã??
?????¯æ??ä¸?®ã????®ã?¨ã????¦ã????ªæ??ªã????®ã??説æ??????å¿?è¦???®ã?ªã???????®ã?¨ã????¦ã???????????
??¨ã?¤ã?????????????????????????ºæ?¬ã?§ã?????

?????¨ã????°ã??ISO 8601 ???è¦???¦ã?¿ã?¾ã?????????????°æ?¹æ????«æ??å·®ã?¯ã???????????å®?ä¸?????????«ã??
??ªã????§ã????????????????????ç©?極ç????«å???????¥ã??????????±ã????????????¾ã????????å°?????¨ã????????
??§ã?¯ã???????¾ã?????????????ªã?????????????¥ã????¦å????¶ã?®ã???????«è???????¹æ???????????????¾ã????????

俺ã?¯ã?¿ã?¤ã????¾ã?¼ã?³ã?????å·®ã?¯ä¿®é£¾è????®ã???????ªã????®ã????¨æ????£ã?¦ã????¾ã????????'%s %z'
??§ã?¯å¯¾è±¡ã?«ã?ªã???????®ã??????????¾ã????????'%s %p' ??ªã????????????????§ã???????????????????????
??«æ???³ã??ä¸????ªã???????°ã?ªã????ªã????¨ã?¯æ???????¾ã????????

?????ªã?????表ç??????????¨ã????¦ã????? '%s %z' ??¯æ?¥ä????¨ã????¦ã?????????????¨æ???????¾ã????????
????????¡ç????«è§£???????????ªã????°ã????¥ä????§ã?¯ã?ªã???¦ã????¥ä????ªã????¸ã?§ã?¯ã????®ä??å®???¨ã?ªã??
?????¼ã?®ã???????ªã????®ã?«ã?????ªã????¨æ???????¾ã?????

???????????????time_t ??¯é???????«ã????´å?????????????®ã?§ã??ç§»æ????§ã??ä¹????????§ã?????????????????
???????????²ã????ªæ????§èª­??¿æ?¸ã????ºæ?¥ã????¨ã????¦ã??????????¾ã??ç©?極ç????«å?©ç?¨ã????§ã???????????
????????ªã????®ã?§ã?¯ã?ªã????¨ã?????äº????è¨???£ã?¦ã?????????????§ã?????ruby ??®ç????¿è¾¼??¿ã?¯ã?©ã?¹ã??
対ã????¦ã??????????¨ã????ªã??äº??????¡ç???????¦ã???????©ã??????????¾ã??????????°ã?????æ©???½ã?¨ã?????
??ªã????¾ã???????????????????¯ã????°ã?§ã?????????????°ã????´ã?£ã?????????????³ã????³ã?¤ã????£ã?¦ä???????????
??¨ã?¯çµ¶å¯¾ã?«è??????????????????¾ã????????

???????????¯å????¥ã????ªå??義ã?®æ?¯è???????¨ã????¦æ?????å¾??????®ã?????????????¾ã????????????????????ä»?
??®æ?????????????¥ã??????????¨ã?¯å?¨ã?????????¾ã?????????????«ä????????????????¥ã????ªã???????°ã?ªã?????
????????±ã?¯ã???????®ã?§ã??????????????ä»???¾ã?§èª°??«ã????????è¨?????????äº???¯ã???????¾ã???????????
??ªã??以å????«ã?¯ã??

??³ã?¼ã?????è¦??????°ã?????????¾ã????????????????«ç?¡è???????¦ã????¾ã?????????³ã????¦ã????£ã?¦ã?¾ã?????
ä»????????????¯å????£ã?¦ã????¾ã????????????????ªã????«èª¬å¾??????????æ°?????????¾ã????????????????§ç??å¾?
??§ã????ªã????´å????¯ä????®ã?¨ã?©ã?¤äºº??«ç?¸è???????¦ä???????????

俺ã?®ç??è«???¯ã??????????¯ã????°ã???????ªã???????§ã?????

----------------------------------------
Bug #7445: strptime('%s %z') doesn't work
https://bugs.ruby-lang.org/issues/7445#change-41622

Author: felipec (Felipe Contreras)
Status: Rejected
Priority: Low
Assignee: tadf (tadayoshi funaba)
Category: lib
Target version: Next Major
ruby -v: ruby 1.9.3p327
Backport: 


See:

    ruby -e "require 'date'; p DateTime.strptime('0 +0100', '%s %z').strftime('%s %z')"

The timezone is ignored.


-- 
http://bugs.ruby-lang.org/