Misc #13810
Inconsistency between Date and Time.strftime("%v")
Description
This seems odd. Each function matches its documentation, but the document and implementation of Date.strftime("%v")
differs from the documentation and implementations of Time.strftime("%v")
and DateTime.strftime("%v")
.
ruby --version ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
require 'time' # https://ruby-doc.org/stdlib-2.4.1/libdoc/date/rdoc/Date.html#method-i-strftime # %v - VMS date (%e-%b-%Y) d = Date.iso8601 "2006-01-02T15:04:05-05:00" puts d.strftime("%v") # -> 2-Jan-2006 puts d.strftime("%e-%b-%Y") # -> 2-Jan-2006 # https://ruby-doc.org/stdlib-2.4.1/libdoc/date/rdoc/DateTime.html#method-i-strftime # %v - VMS date (%e-%b-%Y) dt = DateTime.iso8601 "2006-01-02T15:04:05-05:00" puts dt.strftime("%v") # -> 2-Jan-2006 puts dt.strftime("%e-%b-%Y") # -> 2-Jan-2006 # https://ruby-doc.org/core-2.4.1/Time.html#method-i-strftime # %v - VMS date (%e-%^b-%4Y) t = Time.iso8601 "2006-01-02T15:04:05-05:00" puts t.strftime("%v") # 2-JAN-2006 puts t.strftime("%e-%^b-%4Y") # 2-JAN-2006
Related issues
Updated by nobu (Nobuyoshi Nakada) over 3 years ago
- Status changed from Open to Feedback
At r31672, date changed it but no description or rationale.
- ext/date/date_strftime(date_strftime_with_tmx): "%v" means "%e-%b-%Y".
Does anybody have any pointers?
Updated by osteele (Oliver Steele) over 3 years ago
Ruby's Time.strftime
method (where %v
is equivalent to %e-%^b-%4Y
) is compatible with VMS time format, and Date.strftime
and DateTime.strftime
(where it is equivalent to %e-%b-%Y
) are not, according to section 27.1.1 Absolute Time Format of "OpenVMS Programming Concepts Manual":
The operating system uses the following format for absolute time. […]
dd-MMM-yyyy hh:mm:ss.cc
[…]
MMM Month (first 3 characters of the month in uppercase)
Updated by wanabe (_ wanabe) over 3 years ago
- Related to Bug #4662: Date#strftime %v gives allcaps instead of normal caps added