Project

General

Profile

Misc #13810

Inconsistency between Date and Time.strftime("%v")

Added by osteele (Oliver Steele) 3 months ago. Updated 3 months ago.

Status:
Feedback
Priority:
Normal
Assignee:
-
[ruby-core:82369]

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

Related to Ruby trunk - Bug #4662: Date#strftime %v gives allcaps instead of normal capsClosed2011-05-10

History

#1 [ruby-core:82372] Updated by nobu (Nobuyoshi Nakada) 3 months 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?

#2 [ruby-core:82378] Updated by osteele (Oliver Steele) 3 months 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)

#3 Updated by wanabe (_ wanabe) 3 months ago

  • Related to Bug #4662: Date#strftime %v gives allcaps instead of normal caps added

Also available in: Atom PDF