[前][次][番号順一覧][スレッド一覧]

ruby-changes:72386

From: Burdette <ko1@a...>
Date: Sat, 2 Jul 2022 05:25:30 +0900 (JST)
Subject: [ruby-changes:72386] 8f5ad74e40 (master): [DOC] New page for strftime formats (#6074)

https://git.ruby-lang.org/ruby.git/commit/?id=8f5ad74e40

From 8f5ad74e406feb9097eb0704efe30ea5af2ea65b Mon Sep 17 00:00:00 2001
From: Burdette Lamar <BurdetteLamar@Y...>
Date: Fri, 1 Jul 2022 15:25:05 -0500
Subject: [DOC] New page for strftime formats (#6074)

This new page would be linked from method strftime in Time, Date, and DateTime, replacing the text there.
---
 doc/strftime_formatting.rdoc | 463 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 463 insertions(+)
 create mode 100644 doc/strftime_formatting.rdoc

diff --git a/doc/strftime_formatting.rdoc b/doc/strftime_formatting.rdoc
new file mode 100644
index 0000000000..6c27fa6a23
--- /dev/null
+++ b/doc/strftime_formatting.rdoc
@@ -0,0 +1,463 @@ https://github.com/ruby/ruby/blob/trunk/doc/strftime_formatting.rdoc#L1
+== Formats for Dates and Times
+
+Several Ruby time-related classes have instance method +strftime+,
+which returns a formatted string representing all or part of a date or time:
+
+- Date#strftime.
+- DateTime#strftime.
+- Time#strftime.
+
+Each of these methods takes optional argument +format+,
+which has zero or more embedded _format_ _specifications_ (see below).
+
+Each of these methods returns the string resulting from replacing each
+format specification embedded in +format+ with a string form
+of one or more parts of the date or time.
+
+A simple example:
+
+  Time.now.strftime('%H:%M:%S') # => "14:02:07"
+
+A format specification has the form:
+
+  %[flags][width]conversion
+
+It consists of:
+
+- A leading percent character.
+- Zero or more _flags_ (each is a character).
+- An optional _width_ _specifier_ (an integer).
+- A _conversion_ _specifier_ (a character).
+
+Except for the leading percent character,
+the only required part is the conversion specifier, so we begin with that.
+
+=== Conversion Specifiers
+
+==== \Date (Year, Month, Day)
+
+- <tt>%Y</tt> - Year including century, zero-padded:
+
+    Time.now.strftime('%Y')        # => "2022"
+    Time.new(-1000).strftime('%Y') # => "-1000" # Before common era.
+    Time.new(10000).strftime('%Y') # => "10000" # Far future.
+    Time.new(10).strftime('%Y')    # => "0010"  # Zero-padded by default.
+
+- <tt>%y</tt> - Year without century, in range (0.99), zero-padded:
+
+    Time.now.strftime('%y')    # => "22"
+    Time.new(1).strftime('%y') # => "01" # Zero-padded by default.
+
+- <tt>%C</tt> - Century, zero-padded:
+
+    Time.now.strftime('%C')        # => "20"
+    Time.new(-1000).strftime('%C') # => "-10" # Before common era.
+    Time.new(10000).strftime('%C') # => "100" # Far future.
+    Time.new(100).strftime('%C')   # => "01"  # Zero-padded by default.
+
+- <tt>%m</tt> - Month of the year, in range (1..12), zero-padded:
+
+    Time.new(2022, 1).strftime('%m')  # => "01" # Zero-padded by default.
+    Time.new(2022, 12).strftime('%m') # => "12"
+
+- <tt>%B</tt> - Full month name, capitalized:
+
+    Time.new(2022, 1).strftime('%B')  # => "January"
+    Time.new(2022, 12).strftime('%B') # => "December"
+
+- <tt>%b</tt> - Abbreviated month name, capitalized:
+
+    Time.new(2022, 1).strftime('%b')  # => "Jan"
+    Time.new(2022, 12).strftime('%h') # => "Dec"
+
+- <tt>%h</tt> - Same as <tt>%b</tt>.
+
+- <tt>%d</tt> - Day of the month, in range (1..31), zero-padded:
+
+    Time.new(2002, 1, 1).strftime('%d')  # => "01"
+    Time.new(2002, 1, 31).strftime('%d') # => "31"
+
+- <tt>%e</tt> - Day of the month, in range (1..31), blank-padded:
+
+    Time.new(2002, 1, 1).strftime('%e')  # => " 1"
+    Time.new(2002, 1, 31).strftime('%e') # => "31"
+
+- <tt>%j</tt> - Day of the year, in range (1..366), zero-padded:
+
+    Time.new(2002, 1, 1).strftime('%j')   # => "001"
+    Time.new(2002, 12, 31).strftime('%j') # => "365"
+
+==== \Time (Hour, Minute, Second, Subsecond)
+
+- <tt>%H</tt> - Hour of the day, in range (0..23), zero-padded:
+
+    Time.new(2022, 1, 1, 1).strftime('%H')  # => "01"
+    Time.new(2022, 1, 1, 13).strftime('%H') # => "13"
+
+- <tt>%k</tt> - Hour of the day, in range (0..23), blank-padded:
+
+    Time.new(2022, 1, 1, 1).strftime('%k')  # => " 1"
+    Time.new(2022, 1, 1, 13).strftime('%k') # => "13"
+
+- <tt>%I</tt> - Hour of the day, in range (1..12), zero-padded:
+
+    Time.new(2022, 1, 1, 1).strftime('%I')  # => "01"
+    Time.new(2022, 1, 1, 13).strftime('%I') # => "01"
+
+- <tt>%l</tt> - Hour of the day, in range (1..12), blank-padded:
+
+    Time.new(2022, 1, 1, 1).strftime('%l')  # => " 1"
+    Time.new(2022, 1, 1, 13).strftime('%l') # => " 1"
+
+- <tt>%P</tt> - Meridian indicator, lowercase:
+
+    Time.new(2022, 1, 1, 1).strftime('%P')  # => "am"
+    Time.new(2022, 1, 1, 13).strftime('%P') # => "pm"
+
+- <tt>%p</tt> - Meridian indicator, uppercase:
+
+    Time.new(2022, 1, 1, 1).strftime('%p')  # => "AM"
+    Time.new(2022, 1, 1, 13).strftime('%p') # => "PM"
+
+- <tt>%M</tt> - Minute of the hour, in range (0..59), zero-padded:
+
+    Time.new(2022, 1, 1, 1, 0, 0).strftime('%M') # => "00"
+
+- <tt>%S</tt> - Second of the minute in range (0..59), zero-padded:
+
+    Time.new(2022, 1, 1, 1, 0, 0, 0).strftime('%S') # => "00"
+
+- <tt>%L</tt> - Millisecond of the second, in range (0..999), zero-padded:
+
+    Time.new(2022, 1, 1, 1, 0, 0, 0).strftime('%L') # => "000"
+
+- <tt>%N</tt> - Fractional seconds, default width is 9 digits (nanoseconds):
+
+    t = Time.now       # => 2022-06-29 07:10:20.3230914 -0500
+    t.strftime('%N')   # => "323091400"                  # Default.
+
+  Use {width specifiers}[rdoc-ref:strftime_formatting.rdoc@Width+Specifiers]
+  to adjust units:
+
+      t.strftime('%3N')  # => "323"                      # Milliseconds.
+      t.strftime('%6N')  # => "323091"                   # Microseconds.
+      t.strftime('%9N')  # => "323091400"                # Nanoseconds.
+      t.strftime('%12N') # => "323091400000"             # Picoseconds.
+      t.strftime('%15N') # => "323091400000000"          # Femptoseconds.
+      t.strftime('%18N') # => "323091400000000000"       # Attoseconds.
+      t.strftime('%21N') # => "323091400000000000000"    # Zeptoseconds.
+      t.strftime('%24N') # => "323091400000000000000000" # Yoctoseconds.
+
+- <tt>%s</tt> - Number of seconds since the epoch:
+
+    Time.now.strftime('%s') # => "1656505136"
+
+==== Timezone
+
+- <tt>%z</tt> - Timezone as hour and minute offset from UTC:
+
+    Time.now.strftime('%z') # => "-0500"
+
+- <tt>%Z</tt> - Timezone name (platform-dependent):
+
+    Time.now.strftime('%Z') # => "Central Daylight Time"
+
+==== Weekday
+
+- <tt>%A</tt> - Full weekday name:
+
+    Time.now.strftime('%A') # => "Wednesday"
+
+- <tt>%a</tt> - Abbreviated weekday name:
+
+    Time.now.strftime('%a') # => "Wed"
+
+- <tt>%u</tt> - Day of the week, in range (1..7), Monday is 1:
+
+    t = Time.new(2022, 6, 26) # => 2022-06-26 00:00:00 -0500
+    t.strftime('%a')          # => "Sun"
+    t.strftime('%u')          # => "7"
+
+- <tt>%w</tt> - Day of the week, in range (0..6), Sunday is 0:
+
+    t = Time.new(2022, 6, 26) # => 2022-06-26 00:00:00 -0500
+    t.strftime('%a')          # => "Sun"
+    t.strftime('%w')          # => "0"
+
+==== Week Number
+
+- <tt>%U</tt> - Week number of the year, in range (0..53), zero-padded,
+  where each week begins on a Sunday:
+
+    t = Time.new(2022, 6, 26) # => 2022-06-26 00:00:00 -0500
+    t.strftime('%a')          # => "Sun"
+    t.strftime('%U')          # => "26"
+
+- <tt>%W</tt> - Week number of the year, in range (0..53), zero-padded,
+  where each week begins on a Monday:
+
+    t = Time.new(2022, 6, 26) # => 2022-06-26 00:00:00 -0500
+    t.strftime('%a')          # => "Sun"
+    t.strftime('%W')          # => "25"
+
+==== Week Dates
+
+See {ISO 8601 week dates}[https://en.wikipedia.org/wiki/ISO_8601#Week_dates].
+
+    t0 = Time.new(2023, 1, 1) # => 2023-01-01 00:00:00 -0600
+    t1 = Time.new(2024, 1, 1) # => 2024-01-01 00:00:00 -0600
+
+- <tt>%G</tt> - Week-based year:
+
+    t0.strftime('%G') # => "2022"
+    t1.strftime('%G') # => "2024"
+
+- <tt>%g</tt> - Week-based year without century, in range (0..99), zero-padded:
+
+    t0.strftime('%g') # => "22"
+    t1.strftime('%g') # => "24"
+
+- <tt>%V</tt> - Week number of the week-based year, in range (1..53),
+  zero-padded:
+
+    t0.strftime('%V') # => "52"
+    t1.strftime('%V') # => "01"
+
+==== Literals
+
+- <tt>%n</tt> - Newline character "\n":
+
+    Time.now.strftime('%n') # => "\n"
+
+- <tt>%t</tt> - Tab character "\t":
+
+    Time.now.strftime('%t') # => "\t"
+
+- <tt>%%</tt> - Percent character '%':
+
+    Time.now.strftime('%%') # => "%"
+
+==== Shorthand Conversion Specifiers
+
+Each shorthand specifier here is shown with its corresponding
+longhand specifier.
+
+- <tt>%c</tt> - \Date and time:
+
+    Time.now.strftime('%c')             # => "Wed Jun 29 08:01:41 2022"
+    Time.now.strftime('%a %b %e %T %Y') # => "Wed Jun 29 08:02:07 2022"
+
+- <tt>%D</tt> - \Date:
+
+    Time.now.strftime('%D')       # => "06/29/22"
+    Time.now.strftime('%m/%d/%y') # => "06/29/22"
+
+- <tt>%F</tt> - ISO 8601 date:
+
+    Time.now.strftime('%F')       # => "2022-06-29"
+    Time.now.strftime('%Y-%m-%d') # => "2022-06-29"
+
+- <tt>%v</tt> - VMS date:
+
+    Time.now.strftime('%v')         # => "29-JUN-2022"
+    Time.now.strftime('%e-%^b-%4Y') # => "29-JUN-2022"
+
+- <tt>%x</tt> - Same as <tt>%D</tt>.
+
+- <tt>%X</tt> - Same as <tt>%T</tt>.
+
+- <tt>%r</tt> - 12-hour time:
+
+    Time.new(2022, 1, 1, 1).strftime('%r')           # => "01:00:00 AM"
+    Time.new(2022, 1, 1, 1).strftime('%I:%M:%S %p')  # => "01:00:00 AM"
+    Time.new(2022, 1, 1, 13).strftime('%r')          # => "01:00:00 PM"
+    Time.new(2022, 1, 1, 13).strftime('%I:%M:%S %p') # => "01:00:00 PM"
+
+- <tt>%R</tt> - 24-hour time:
+
+    Time.new(2022, 1, 1, 1).strftime('%R')     # => "01:00"
+    Time.new(2022, 1, 1, 1).strftime('%H:%M')  # => "01:00"
+    Time.new(2022, 1, 1, 13).strftime('%R')    # => "13:00"
+    Time.new(2022, 1, 1, 13).strftime('%H:%M') # => "13:00"
+
+- <tt>%T</tt> - 24-hour time:
+
+    Time.new(2022, 1, 1, 1).strftime('%T')        # => "01: (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]