HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Ruby27-x64/share/doc/ruby/html/Time.html
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">

<title>class Time - RDoc Documentation</title>

<script type="text/javascript">
  var rdoc_rel_prefix = "./";
  var index_rel_prefix = "./";
</script>

<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>

<link href="./css/fonts.css" rel="stylesheet">
<link href="./css/rdoc.css" rel="stylesheet">




<body id="top" role="document" class="class">
<nav role="navigation">
  <div id="project-navigation">
    <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2>
    <a href="./index.html" rel="home">Home</a>
  </h2>

  <div id="table-of-contents-navigation">
    <a href="./table_of_contents.html#pages">Pages</a>
    <a href="./table_of_contents.html#classes">Classes</a>
    <a href="./table_of_contents.html#methods">Methods</a>
  </div>
</div>

    <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

  </div>

  
<div class="nav-section">
  <h3>Table of Contents</h3>

  <ul class="link-list" role="directory">
    <li><a href="#class-Time-label-Examples">Examples</a>
    <li><a href="#class-Time-label-Creating+a+new+Time+instance">Creating a new Time instance</a>
    <li><a href="#class-Time-label-Working+with+an+instance+of+Time">Working with an instance of Time</a>
    <li><a href="#class-Time-label-Timezone+argument">Timezone argument</a>
    <li><a href="#class-Time-label-Auto+conversion+to+Timezone">Auto conversion to Timezone</a>
  </ul>
</div>


  <div id="class-metadata">
    
    <div id="parent-class-section" class="nav-section">
  <h3>Parent</h3>

  
  <p class="link"><a href="Object.html">Object</a>
  
</div>

    <div id="includes-section" class="nav-section">
  <h3>Included Modules</h3>

  <ul class="link-list">
  
  
    <li><a class="include" href="Comparable.html">Comparable</a>
  
  
  </ul>
</div>

    
    <!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    
    <li ><a href="#method-c-apply_offset">::apply_offset</a>
    
    <li ><a href="#method-c-at">::at</a>
    
    <li ><a href="#method-c-force_zone-21">::force_zone!</a>
    
    <li ><a href="#method-c-gm">::gm</a>
    
    <li ><a href="#method-c-httpdate">::httpdate</a>
    
    <li ><a href="#method-c-iso8601">::iso8601</a>
    
    <li ><a href="#method-c-json_create">::json_create</a>
    
    <li ><a href="#method-c-local">::local</a>
    
    <li ><a href="#method-c-make_time">::make_time</a>
    
    <li ><a href="#method-c-mktime">::mktime</a>
    
    <li ><a href="#method-c-month_days">::month_days</a>
    
    <li ><a href="#method-c-new">::new</a>
    
    <li ><a href="#method-c-now">::now</a>
    
    <li ><a href="#method-c-parse">::parse</a>
    
    <li ><a href="#method-c-rfc2822">::rfc2822</a>
    
    <li ><a href="#method-c-rfc822">::rfc822</a>
    
    <li ><a href="#method-c-strptime">::strptime</a>
    
    <li ><a href="#method-c-utc">::utc</a>
    
    <li ><a href="#method-c-w3cdtf">::w3cdtf</a>
    
    <li ><a href="#method-c-xmlschema">::xmlschema</a>
    
    <li ><a href="#method-c-zone_offset">::zone_offset</a>
    
    <li ><a href="#method-c-zone_utc-3F">::zone_utc?</a>
    
    <li ><a href="#method-i-2B">#+</a>
    
    <li ><a href="#method-i-2D">#-</a>
    
    <li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a>
    
    <li ><a href="#method-i-as_json">#as_json</a>
    
    <li ><a href="#method-i-asctime">#asctime</a>
    
    <li ><a href="#method-i-ceil">#ceil</a>
    
    <li ><a href="#method-i-ctime">#ctime</a>
    
    <li ><a href="#method-i-day">#day</a>
    
    <li ><a href="#method-i-dst-3F">#dst?</a>
    
    <li ><a href="#method-i-eql-3F">#eql?</a>
    
    <li ><a href="#method-i-floor">#floor</a>
    
    <li ><a href="#method-i-friday-3F">#friday?</a>
    
    <li ><a href="#method-i-getgm">#getgm</a>
    
    <li ><a href="#method-i-getlocal">#getlocal</a>
    
    <li ><a href="#method-i-getutc">#getutc</a>
    
    <li ><a href="#method-i-gmt-3F">#gmt?</a>
    
    <li ><a href="#method-i-gmt_offset">#gmt_offset</a>
    
    <li ><a href="#method-i-gmtime">#gmtime</a>
    
    <li ><a href="#method-i-gmtoff">#gmtoff</a>
    
    <li ><a href="#method-i-hash">#hash</a>
    
    <li ><a href="#method-i-hour">#hour</a>
    
    <li ><a href="#method-i-httpdate">#httpdate</a>
    
    <li ><a href="#method-i-inspect">#inspect</a>
    
    <li ><a href="#method-i-isdst">#isdst</a>
    
    <li ><a href="#method-i-iso8601">#iso8601</a>
    
    <li ><a href="#method-i-localtime">#localtime</a>
    
    <li ><a href="#method-i-mday">#mday</a>
    
    <li ><a href="#method-i-min">#min</a>
    
    <li ><a href="#method-i-mon">#mon</a>
    
    <li ><a href="#method-i-monday-3F">#monday?</a>
    
    <li ><a href="#method-i-month">#month</a>
    
    <li ><a href="#method-i-nsec">#nsec</a>
    
    <li ><a href="#method-i-rfc2822">#rfc2822</a>
    
    <li ><a href="#method-i-rfc822">#rfc822</a>
    
    <li ><a href="#method-i-round">#round</a>
    
    <li ><a href="#method-i-saturday-3F">#saturday?</a>
    
    <li ><a href="#method-i-sec">#sec</a>
    
    <li ><a href="#method-i-strftime">#strftime</a>
    
    <li ><a href="#method-i-subsec">#subsec</a>
    
    <li ><a href="#method-i-succ">#succ</a>
    
    <li ><a href="#method-i-sunday-3F">#sunday?</a>
    
    <li ><a href="#method-i-thursday-3F">#thursday?</a>
    
    <li ><a href="#method-i-to_a">#to_a</a>
    
    <li ><a href="#method-i-to_date">#to_date</a>
    
    <li ><a href="#method-i-to_datetime">#to_datetime</a>
    
    <li ><a href="#method-i-to_f">#to_f</a>
    
    <li ><a href="#method-i-to_i">#to_i</a>
    
    <li ><a href="#method-i-to_json">#to_json</a>
    
    <li ><a href="#method-i-to_r">#to_r</a>
    
    <li ><a href="#method-i-to_s">#to_s</a>
    
    <li ><a href="#method-i-to_time">#to_time</a>
    
    <li ><a href="#method-i-tuesday-3F">#tuesday?</a>
    
    <li ><a href="#method-i-tv_nsec">#tv_nsec</a>
    
    <li ><a href="#method-i-tv_sec">#tv_sec</a>
    
    <li ><a href="#method-i-tv_usec">#tv_usec</a>
    
    <li ><a href="#method-i-usec">#usec</a>
    
    <li ><a href="#method-i-utc">#utc</a>
    
    <li ><a href="#method-i-utc-3F">#utc?</a>
    
    <li ><a href="#method-i-utc_offset">#utc_offset</a>
    
    <li ><a href="#method-i-w3cdtf">#w3cdtf</a>
    
    <li ><a href="#method-i-wday">#wday</a>
    
    <li ><a href="#method-i-wednesday-3F">#wednesday?</a>
    
    <li ><a href="#method-i-xmlschema">#xmlschema</a>
    
    <li ><a href="#method-i-yday">#yday</a>
    
    <li ><a href="#method-i-year">#year</a>
    
    <li ><a href="#method-i-zone">#zone</a>
    
  </ul>
</div>

  </div>
</nav>

<main role="main" aria-labelledby="class-Time">
  <h1 id="class-Time" class="class">
    class Time
  </h1>

  <section class="description">
    
<p><a href="Time.html"><code>Time</code></a> is an abstraction of dates and times. <a href="Time.html"><code>Time</code></a> is stored internally as the number of seconds with fraction since the <em>Epoch</em>, January 1, 1970 00:00 UTC. Also see the library module <a href="Date.html"><code>Date</code></a>. The <a href="Time.html"><code>Time</code></a> class treats GMT (Greenwich Mean <a href="Time.html"><code>Time</code></a>) and UTC (Coordinated Universal <a href="Time.html"><code>Time</code></a>) as equivalent. GMT is the older way of referring to these baseline times but persists in the names of calls on POSIX systems.</p>

<p>All times may have fraction. Be aware of this fact when comparing times with each other – times that are apparently equal when displayed may be different when compared.</p>

<p>Since Ruby 1.9.2, <a href="Time.html"><code>Time</code></a> implementation uses a signed 63 bit integer, Bignum or <a href="Rational.html"><code>Rational</code></a>. The integer is a number of nanoseconds since the <em>Epoch</em> which can represent 1823-11-12 to 2116-02-20. When Bignum or <a href="Rational.html"><code>Rational</code></a> is used (before 1823, after 2116, under nanosecond), <a href="Time.html"><code>Time</code></a> works slower as when integer is used.</p>

<h1 id="class-Time-label-Examples">Examples<span><a href="#class-Time-label-Examples">&para;</a> <a href="#top">&uarr;</a></span></h1>

<p>All of these examples were done using the EST timezone which is GMT-5.</p>

<h2 id="class-Time-label-Creating+a+new+Time+instance">Creating a new <a href="Time.html"><code>Time</code></a> instance<span><a href="#class-Time-label-Creating+a+new+Time+instance">&para;</a> <a href="#top">&uarr;</a></span></h2>

<p>You can create a new instance of <a href="Time.html"><code>Time</code></a> with <a href="Time.html#method-c-new"><code>Time::new</code></a>. This will use the current system time. <a href="Time.html#method-c-now"><code>Time::now</code></a> is an alias for this. You can also pass parts of the time to <a href="Time.html#method-c-new"><code>Time::new</code></a> such as year, month, minute, etc. When you want to construct a time this way you must pass at least a year. If you pass the year with nothing else time will default to January 1 of that year at 00:00:00 with the current system timezone. Here are some examples:</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2002</span>)         <span class="ruby-comment">#=&gt; 2002-01-01 00:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2002</span>, <span class="ruby-value">10</span>)     <span class="ruby-comment">#=&gt; 2002-10-01 00:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2002</span>, <span class="ruby-value">10</span>, <span class="ruby-value">31</span>) <span class="ruby-comment">#=&gt; 2002-10-31 00:00:00 -0500</span>
</pre>

<p>You can pass a UTC offset:</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2002</span>, <span class="ruby-value">10</span>, <span class="ruby-value">31</span>, <span class="ruby-value">2</span>, <span class="ruby-value">2</span>, <span class="ruby-value">2</span>, <span class="ruby-string">&quot;+02:00&quot;</span>) <span class="ruby-comment">#=&gt; 2002-10-31 02:02:02 +0200</span>
</pre>

<p>Or a timezone object:</p>

<pre class="ruby"><span class="ruby-identifier">tz</span> = <span class="ruby-identifier">timezone</span>(<span class="ruby-string">&quot;Europe/Athens&quot;</span>) <span class="ruby-comment"># Eastern European Time, UTC+2</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2002</span>, <span class="ruby-value">10</span>, <span class="ruby-value">31</span>, <span class="ruby-value">2</span>, <span class="ruby-value">2</span>, <span class="ruby-value">2</span>, <span class="ruby-identifier">tz</span>) <span class="ruby-comment">#=&gt; 2002-10-31 02:02:02 +0200</span>
</pre>

<p>You can also use <a href="Time.html#method-c-gm"><code>Time::gm</code></a>, <a href="Time.html#method-c-local"><code>Time::local</code></a> and <a href="Time.html#method-c-utc"><code>Time::utc</code></a> to infer GMT, local and UTC timezones instead of using the current system setting.</p>

<p>You can also create a new time using <a href="Time.html#method-c-at"><code>Time::at</code></a> which takes the number of seconds (or fraction of seconds) since the <a href="http://en.wikipedia.org/wiki/Unix_time">Unix Epoch</a>.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">628232400</span>) <span class="ruby-comment">#=&gt; 1989-11-28 00:00:00 -0500</span>
</pre>

<h2 id="class-Time-label-Working+with+an+instance+of+Time">Working with an instance of <a href="Time.html"><code>Time</code></a><span><a href="#class-Time-label-Working+with+an+instance+of+Time">&para;</a> <a href="#top">&uarr;</a></span></h2>

<p>Once you have an instance of <a href="Time.html"><code>Time</code></a> there is a multitude of things you can do with it. Below are some examples. For all of the following examples, we will work on the assumption that you have done the following:</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">1993</span>, <span class="ruby-value">02</span>, <span class="ruby-value">24</span>, <span class="ruby-value">12</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-string">&quot;+09:00&quot;</span>)
</pre>

<p>Was that a monday?</p>

<pre class="ruby"><span class="ruby-identifier">t</span>.<span class="ruby-identifier">monday?</span> <span class="ruby-comment">#=&gt; false</span>
</pre>

<p>What year was that again?</p>

<pre class="ruby"><span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span> <span class="ruby-comment">#=&gt; 1993</span>
</pre>

<p>Was it daylight savings at the time?</p>

<pre class="ruby"><span class="ruby-identifier">t</span>.<span class="ruby-identifier">dst?</span> <span class="ruby-comment">#=&gt; false</span>
</pre>

<p>What&#39;s the day a year later?</p>

<pre class="ruby"><span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> (<span class="ruby-value">60</span><span class="ruby-operator">*</span><span class="ruby-value">60</span><span class="ruby-operator">*</span><span class="ruby-value">24</span><span class="ruby-operator">*</span><span class="ruby-value">365</span>) <span class="ruby-comment">#=&gt; 1994-02-24 12:00:00 +0900</span>
</pre>

<p>How many seconds was that since the Unix Epoch?</p>

<pre class="ruby"><span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-comment">#=&gt; 730522800</span>
</pre>

<p>You can also do standard functions like compare two times.</p>

<pre class="ruby"><span class="ruby-identifier">t1</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2010</span>)
<span class="ruby-identifier">t2</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2011</span>)

<span class="ruby-identifier">t1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">t2</span> <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">t1</span> <span class="ruby-comment">#=&gt; true</span>
<span class="ruby-identifier">t1</span> <span class="ruby-operator">&lt;</span>  <span class="ruby-identifier">t2</span> <span class="ruby-comment">#=&gt; true</span>
<span class="ruby-identifier">t1</span> <span class="ruby-operator">&gt;</span>  <span class="ruby-identifier">t2</span> <span class="ruby-comment">#=&gt; false</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2010</span>,<span class="ruby-value">10</span>,<span class="ruby-value">31</span>).<span class="ruby-identifier">between?</span>(<span class="ruby-identifier">t1</span>, <span class="ruby-identifier">t2</span>) <span class="ruby-comment">#=&gt; true</span>
</pre>

<h2 id="class-Time-label-Timezone+argument">Timezone argument<span><a href="#class-Time-label-Timezone+argument">&para;</a> <a href="#top">&uarr;</a></span></h2>

<p>A timezone argument must have <code>local_to_utc</code> and <code>utc_to_local</code> methods, and may have <code>name</code>, <code>abbr</code>, and <code>dst?</code> methods.</p>

<p>The <code>local_to_utc</code> method should convert a Time-like object from the timezone to UTC, and <code>utc_to_local</code> is the opposite.  The result also should be a <a href="Time.html"><code>Time</code></a> or Time-like object (not necessary to be the same class).  The <a href="Time.html#method-i-zone"><code>zone</code></a> of the result is just ignored. Time-like argument to these methods is similar to a <a href="Time.html"><code>Time</code></a> object in UTC without sub-second; it has attribute readers for the parts, e.g. <a href="Time.html#method-i-year"><code>year</code></a>, <a href="Time.html#method-i-month"><code>month</code></a>, and so on, and epoch time readers, <a href="Time.html#method-i-to_i"><code>to_i</code></a>.  The sub-second attributes are fixed as 0, and <a href="Time.html#method-i-utc_offset"><code>utc_offset</code></a>, <a href="Time.html#method-i-zone"><code>zone</code></a>, <a href="Time.html#method-i-isdst"><code>isdst</code></a>, and their aliases are same as a <a href="Time.html"><code>Time</code></a> object in UTC. Also <a href="Time.html#method-i-to_time"><code>to_time</code></a>, <a href="Time.html#method-i-2B"><code>+</code></a>, and <a href="Time.html#method-i-2D"><code>-</code></a> methods are defined.</p>

<p>The <code>name</code> method is used for marshaling. If this method is not defined on a timezone object, <a href="Time.html"><code>Time</code></a> objects using that timezone object can not be dumped by <a href="Marshal.html"><code>Marshal</code></a>.</p>

<p>The <code>abbr</code> method is used by &#39;%Z&#39; in <a href="Time.html#method-i-strftime"><code>strftime</code></a>.</p>

<p>The <code>dst?</code> method is called with a <code>Time</code> value and should return whether the <code>Time</code> value is in daylight savings time in the zone.</p>

<h3 id="class-Time-label-Auto+conversion+to+Timezone">Auto conversion to Timezone<span><a href="#class-Time-label-Auto+conversion+to+Timezone">&para;</a> <a href="#top">&uarr;</a></span></h3>

<p>At loading marshaled data, a timezone name will be converted to a timezone object by <code>find_timezone</code> class method, if the method is defined.</p>

<p>Similarly, that class method will be called when a timezone argument does not have the necessary methods mentioned above.</p>

  </section>

  
  <section id="5Buntitled-5D" class="documentation-section">
    

    

    

    

    
     <section id="public-class-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Class Methods</h3>
       </header>

    
      <div id="method-c-at" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            at(time) &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, microseconds_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, milliseconds, :millisecond) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, microseconds, :usec) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, microseconds, :microsecond) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, nanoseconds, :nsec) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, nanoseconds, :nanosecond) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(time, in: tz) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds_with_frac, in: tz) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, microseconds_with_frac, in: tz) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, milliseconds, :millisecond, in: tz) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, microseconds, :usec, in: tz) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, microseconds, :microsecond, in: tz) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, nanoseconds, :nsec, in: tz) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            at(seconds, nanoseconds, :nanosecond, in: tz) &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Creates a new <a href="Time.html"><code>Time</code></a> object with the value given by <code>time</code>, the given number of <code>seconds_with_frac</code>, or <code>seconds</code> and <code>microseconds_with_frac</code> since the Epoch. <code>seconds_with_frac</code> and <code>microseconds_with_frac</code> can be an <a href="Integer.html"><code>Integer</code></a>, <a href="Float.html"><code>Float</code></a>, <a href="Rational.html"><code>Rational</code></a>, or other <a href="Numeric.html"><code>Numeric</code></a>. non-portable feature allows the offset to be negative on some systems.</p>

<p>If <code>in</code> argument is given, the result is in that timezone or UTC offset, or if a numeric argument is given, the result is in local time.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">0</span>)                                <span class="ruby-comment">#=&gt; 1969-12-31 18:00:00 -0600</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">0</span>))                       <span class="ruby-comment">#=&gt; 1969-12-31 18:00:00 -0600</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">946702800</span>)                        <span class="ruby-comment">#=&gt; 1999-12-31 23:00:00 -0600</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">-284061600</span>)                       <span class="ruby-comment">#=&gt; 1960-12-31 00:00:00 -0600</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">946684800.2</span>).<span class="ruby-identifier">usec</span>                 <span class="ruby-comment">#=&gt; 200000</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">946684800</span>, <span class="ruby-value">123456.789</span>).<span class="ruby-identifier">nsec</span>       <span class="ruby-comment">#=&gt; 123456789</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-value">946684800</span>, <span class="ruby-value">123456789</span>, <span class="ruby-value">:nsec</span>).<span class="ruby-identifier">nsec</span> <span class="ruby-comment">#=&gt; 123456789</span>
</pre>
          
          

          
          <div class="method-source-code" id="at-source">
            <pre>static VALUE
time_s_at(int argc, VALUE *argv, VALUE klass)
{
    VALUE time, t, unit = Qundef, zone = Qundef, opts;
    VALUE vals[TMOPT_MAX_];
    wideval_t timew;

    argc = rb_scan_args(argc, argv, &quot;12:&quot;, &amp;time, &amp;t, &amp;unit, &amp;opts);
    if (get_tmopt(opts, vals)) {
        zone = vals[0];
    }
    if (argc &gt;= 2) {
        int scale = argc == 3 ? get_scale(unit) : 1000000;
        time = num_exact(time);
        t = num_exact(t);
        timew = wadd(rb_time_magnify(v2w(time)), wmulquoll(v2w(t), TIME_SCALE, scale));
        t = time_new_timew(klass, timew);
    }
    else if (IsTimeval(time)) {
        struct time_object *tobj, *tobj2;
        GetTimeval(time, tobj);
        t = time_new_timew(klass, tobj-&gt;timew);
        GetTimeval(t, tobj2);
        TZMODE_COPY(tobj2, tobj);
    }
    else {
        timew = rb_time_magnify(v2w(num_exact(time)));
        t = time_new_timew(klass, timew);
    }
    if (zone != Qundef) {
        time_zonelocal(t, zone);
    }

    return t;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-gm" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(year) &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(year, month) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(year, month, day) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(year, month, day, hour) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(year, month, day, hour, min) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(year, month, day, hour, min, sec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(year, month, day, hour, min, sec, usec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            gm(sec, min, hour, day, month, year, dummy, dummy, dummy, dummy) &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Creates a <a href="Time.html"><code>Time</code></a> object based on given values, interpreted as UTC (GMT). The year must be specified. Other values default to the minimum value for that field (and may be <code>nil</code> or omitted). Months may be specified by numbers from 1 to 12, or by the three-letter <a href="English.html"><code>English</code></a> month names. Hours are specified on a 24-hour clock (0..23). Raises an <a href="ArgumentError.html"><code>ArgumentError</code></a> if any values are out of range. Will also accept ten arguments in the order output by <a href="Time.html#method-i-to_a"><code>Time#to_a</code></a>.</p>

<p><code>sec_with_frac</code> and <code>usec_with_frac</code> can have a fractional part.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)  <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
</pre>
          
          

          
          <div class="method-source-code" id="gm-source">
            <pre>static VALUE
time_s_mkutc(int argc, VALUE *argv, VALUE klass)
{
    struct vtm vtm;

    time_arg(argc, argv, &amp;vtm);
    return time_gmtime(time_new_timew(klass, timegmw(&amp;vtm)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-httpdate" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">httpdate</span><span
            class="method-args">(date)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Parses <code>date</code> as an HTTP-date defined by RFC 2616 and converts it to a <a href="Time.html"><code>Time</code></a> object.</p>

<p><a href="ArgumentError.html"><code>ArgumentError</code></a> is raised if <code>date</code> is not compliant with RFC 2616 or if the <a href="Time.html"><code>Time</code></a> class cannot represent specified date.</p>

<p>See <a href="Time.html#method-i-httpdate"><code>httpdate</code></a> for more information on this format.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">httpdate</span>(<span class="ruby-string">&quot;Thu, 06 Oct 2011 02:26:12 GMT&quot;</span>)
<span class="ruby-comment">#=&gt; 2011-10-06 02:26:12 UTC</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="httpdate-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 555</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">httpdate</span>(<span class="ruby-identifier">date</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">match?</span>(<span class="ruby-regexp">/\A\s*
      (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\x20
      (\d{2})\x20
      (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
      (\d{4})\x20
      (\d{2}):(\d{2}):(\d{2})\x20
      GMT
      \s*\z/ix</span>)
    <span class="ruby-keyword">self</span>.<span class="ruby-identifier">rfc2822</span>(<span class="ruby-identifier">date</span>).<span class="ruby-identifier">utc</span>
  <span class="ruby-keyword">elsif</span> <span class="ruby-regexp">/\A\s*
         (?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday),\x20
         (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d)\x20
         (\d\d):(\d\d):(\d\d)\x20
         GMT
         \s*\z/ix</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">date</span>
    <span class="ruby-identifier">year</span> = <span class="ruby-node">$3</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">50</span>
      <span class="ruby-identifier">year</span> <span class="ruby-operator">+=</span> <span class="ruby-value">2000</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">year</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1900</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">self</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-identifier">year</span>, <span class="ruby-node">$2</span>, <span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$5</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$6</span>.<span class="ruby-identifier">to_i</span>)
  <span class="ruby-keyword">elsif</span> <span class="ruby-regexp">/\A\s*
         (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\x20
         (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
         (\d\d|\x20\d)\x20
         (\d\d):(\d\d):(\d\d)\x20
         (\d{4})
         \s*\z/ix</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">date</span>
    <span class="ruby-keyword">self</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-node">$6</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-constant">MonthValue</span>[<span class="ruby-node">$1</span>.<span class="ruby-identifier">upcase</span>], <span class="ruby-node">$2</span>.<span class="ruby-identifier">to_i</span>,
             <span class="ruby-node">$3</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$5</span>.<span class="ruby-identifier">to_i</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;not RFC 2616 compliant date: #{date.inspect}&quot;</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-iso8601" class="method-detail method-alias">
        
        <div class="method-heading">
          <span class="method-name">iso8601</span><span
            class="method-args">(date)</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
        </div>

        

        
        <div class="aliases">
          Alias for: <a href="Time.html#method-c-xmlschema">xmlschema</a>
        </div>
        
      </div>

    
      <div id="method-c-json_create" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">json_create</span><span
            class="method-args">(object)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Deserializes <a href="JSON.html"><code>JSON</code></a> string by converting time since epoch to <a href="Time.html"><code>Time</code></a></p>
          
          

          
          <div class="method-source-code" id="json_create-source">
            <pre><span class="ruby-comment"># File ext/json/lib/json/add/time.rb, line 9</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">json_create</span>(<span class="ruby-identifier">object</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">usec</span> = <span class="ruby-identifier">object</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-string">&#39;u&#39;</span>) <span class="ruby-comment"># used to be tv_usec -&gt; tv_nsec</span>
    <span class="ruby-identifier">object</span>[<span class="ruby-string">&#39;n&#39;</span>] = <span class="ruby-identifier">usec</span> <span class="ruby-operator">*</span> <span class="ruby-value">1000</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">method_defined?</span>(<span class="ruby-value">:tv_nsec</span>)
    <span class="ruby-identifier">at</span>(<span class="ruby-identifier">object</span>[<span class="ruby-string">&#39;s&#39;</span>], <span class="ruby-constant">Rational</span>(<span class="ruby-identifier">object</span>[<span class="ruby-string">&#39;n&#39;</span>], <span class="ruby-value">1000</span>))
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">at</span>(<span class="ruby-identifier">object</span>[<span class="ruby-string">&#39;s&#39;</span>], <span class="ruby-identifier">object</span>[<span class="ruby-string">&#39;n&#39;</span>] <span class="ruby-operator">/</span> <span class="ruby-value">1000</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-local" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            local(year) &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            local(year, month) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            local(year, month, day) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            local(year, month, day, hour) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            local(year, month, day, hour, min) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            local(year, month, day, hour, min, sec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            local(year, month, day, hour, min, sec, usec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            local(sec, min, hour, day, month, year, dummy, dummy, isdst, dummy) &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Same as <a href="Time.html#method-c-gm"><code>Time::gm</code></a>, but interprets the values in the local time zone.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 -0600</span>
</pre>
          
          

          
          <div class="method-source-code" id="local-source">
            <pre>static VALUE
time_s_mktime(int argc, VALUE *argv, VALUE klass)
{
    struct vtm vtm;

    time_arg(argc, argv, &amp;vtm);
    return time_localtime(time_new_timew(klass, timelocalw(&amp;vtm)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-mktime" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(year) &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(year, month) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(year, month, day) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(year, month, day, hour) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(year, month, day, hour, min) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(year, month, day, hour, min, sec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(year, month, day, hour, min, sec, usec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            mktime(sec, min, hour, day, month, year, dummy, dummy, isdst, dummy) &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Same as <a href="Time.html#method-c-gm"><code>Time::gm</code></a>, but interprets the values in the local time zone.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 -0600</span>
</pre>
          
          

          
          <div class="method-source-code" id="mktime-source">
            <pre>static VALUE
time_s_mktime(int argc, VALUE *argv, VALUE klass)
{
    struct vtm vtm;

    time_arg(argc, argv, &amp;vtm);
    return time_localtime(time_new_timew(klass, timelocalw(&amp;vtm)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-new" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            new &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            new(year, month=nil, day=nil, hour=nil, min=nil, sec=nil, tz=nil) &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a <a href="Time.html"><code>Time</code></a> object.</p>

<p>It is initialized to the current system time if no argument is given.</p>

<p><strong>Note:</strong> The new object will use the resolution available on your system clock, and may include fractional seconds.</p>

<p>If one or more arguments are specified, the time is initialized to the specified time.</p>

<p><code>sec</code> may have fraction if it is a rational.</p>

<p><code>tz</code> specifies the timezone. It can be an offset from UTC, given either as a string such as “+09:00” or a single letter “A”..“Z” excluding “J” (so-called military time zone), or as a number of seconds such as 32400. Or it can be a timezone object, see <a href="#class-Time-label-Timezone+argument">Timezone argument</a> for details.</p>

<pre class="ruby"><span class="ruby-identifier">a</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>      <span class="ruby-comment">#=&gt; 2007-11-19 07:50:02 -0600</span>
<span class="ruby-identifier">b</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>      <span class="ruby-comment">#=&gt; 2007-11-19 07:50:02 -0600</span>
<span class="ruby-identifier">a</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">b</span>            <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-string">&quot;%.6f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1195480202.282373&quot;</span>
<span class="ruby-string">&quot;%.6f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1195480202.283415&quot;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2008</span>,<span class="ruby-value">6</span>,<span class="ruby-value">21</span>, <span class="ruby-value">13</span>,<span class="ruby-value">30</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;+09:00&quot;</span>) <span class="ruby-comment">#=&gt; 2008-06-21 13:30:00 +0900</span>

<span class="ruby-comment"># A trip for RubyConf 2007</span>
<span class="ruby-identifier">t1</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">1</span>,<span class="ruby-value">15</span>,<span class="ruby-value">25</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;+09:00&quot;</span>) <span class="ruby-comment"># JST (Narita)</span>
<span class="ruby-identifier">t2</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">1</span>,<span class="ruby-value">12</span>, <span class="ruby-value">5</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;-05:00&quot;</span>) <span class="ruby-comment"># CDT (Minneapolis)</span>
<span class="ruby-identifier">t3</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">1</span>,<span class="ruby-value">13</span>,<span class="ruby-value">25</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;-05:00&quot;</span>) <span class="ruby-comment"># CDT (Minneapolis)</span>
<span class="ruby-identifier">t4</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">1</span>,<span class="ruby-value">16</span>,<span class="ruby-value">53</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;-04:00&quot;</span>) <span class="ruby-comment"># EDT (Charlotte)</span>
<span class="ruby-identifier">t5</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">5</span>, <span class="ruby-value">9</span>,<span class="ruby-value">24</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;-05:00&quot;</span>) <span class="ruby-comment"># EST (Charlotte)</span>
<span class="ruby-identifier">t6</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">5</span>,<span class="ruby-value">11</span>,<span class="ruby-value">21</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;-05:00&quot;</span>) <span class="ruby-comment"># EST (Detroit)</span>
<span class="ruby-identifier">t7</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">5</span>,<span class="ruby-value">13</span>,<span class="ruby-value">45</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;-05:00&quot;</span>) <span class="ruby-comment"># EST (Detroit)</span>
<span class="ruby-identifier">t8</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">6</span>,<span class="ruby-value">17</span>,<span class="ruby-value">10</span>,<span class="ruby-value">0</span>, <span class="ruby-string">&quot;+09:00&quot;</span>) <span class="ruby-comment"># JST (Narita)</span>
(<span class="ruby-identifier">t2</span><span class="ruby-operator">-</span><span class="ruby-identifier">t1</span>)<span class="ruby-operator">/</span><span class="ruby-value">3600.0</span>                             <span class="ruby-comment">#=&gt; 10.666666666666666</span>
(<span class="ruby-identifier">t4</span><span class="ruby-operator">-</span><span class="ruby-identifier">t3</span>)<span class="ruby-operator">/</span><span class="ruby-value">3600.0</span>                             <span class="ruby-comment">#=&gt; 2.466666666666667</span>
(<span class="ruby-identifier">t6</span><span class="ruby-operator">-</span><span class="ruby-identifier">t5</span>)<span class="ruby-operator">/</span><span class="ruby-value">3600.0</span>                             <span class="ruby-comment">#=&gt; 1.95</span>
(<span class="ruby-identifier">t8</span><span class="ruby-operator">-</span><span class="ruby-identifier">t7</span>)<span class="ruby-operator">/</span><span class="ruby-value">3600.0</span>                             <span class="ruby-comment">#=&gt; 13.416666666666666</span>
</pre>
          
          

          
          <div class="method-source-code" id="new-source">
            <pre>static VALUE
time_init(int argc, VALUE *argv, VALUE time)
{
    if (argc == 0)
        return time_init_0(time);
    else
        return time_init_1(argc, argv, time);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-now" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            now &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Creates a new <a href="Time.html"><code>Time</code></a> object for the current time. This is same as <a href="Time.html#method-c-new"><code>Time.new</code></a> without arguments.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>            <span class="ruby-comment">#=&gt; 2009-06-24 12:39:54 +0900</span>
</pre>
          
          

          
          <div class="method-source-code" id="now-source">
            <pre>static VALUE
time_s_now(int argc, VALUE *argv, VALUE klass)
{
    VALUE vals[TMOPT_MAX_], opts, t, zone = Qundef;
    rb_scan_args(argc, argv, &quot;:&quot;, &amp;opts);
    if (get_tmopt(opts, vals)) zone = vals[TMOPT_IN];
    t = rb_class_new_instance(0, NULL, klass);
    if (zone != Qundef) {
        time_zonelocal(t, zone);
    }
    return t;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-parse" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">parse</span><span
            class="method-args">(date, now=self.now) { |year| ... }</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Takes a string representation of a <a href="Time.html"><code>Time</code></a> and attempts to parse it using a heuristic.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;2010-10-31&quot;</span>) <span class="ruby-comment">#=&gt; 2010-10-31 00:00:00 -0500</span>
</pre>

<p>Any missing pieces of the date are inferred based on the current date.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-comment"># assuming the current date is &quot;2011-10-31&quot;</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;12:00&quot;</span>) <span class="ruby-comment">#=&gt; 2011-10-31 12:00:00 -0500</span>
</pre>

<p>We can change the date used to infer our missing elements by passing a second object that responds to <a href="Time.html#method-i-mon"><code>mon</code></a>, <a href="Time.html#method-i-day"><code>day</code></a> and <a href="Time.html#method-i-year"><code>year</code></a>, such as <a href="Date.html"><code>Date</code></a>, <a href="Time.html"><code>Time</code></a> or <a href="DateTime.html"><code>DateTime</code></a>. We can also use our own object.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-keyword">class</span> <span class="ruby-constant">MyDate</span>
  <span class="ruby-identifier">attr_reader</span> <span class="ruby-value">:mon</span>, <span class="ruby-value">:day</span>, <span class="ruby-value">:year</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">year</span>)
    <span class="ruby-ivar">@mon</span>, <span class="ruby-ivar">@day</span>, <span class="ruby-ivar">@year</span> = <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">year</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>

<span class="ruby-identifier">d</span>  = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;2010-10-28&quot;</span>)
<span class="ruby-identifier">t</span>  = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;2010-10-29&quot;</span>)
<span class="ruby-identifier">dt</span> = <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;2010-10-30&quot;</span>)
<span class="ruby-identifier">md</span> = <span class="ruby-constant">MyDate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">10</span>,<span class="ruby-value">31</span>,<span class="ruby-value">2010</span>)

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;12:00&quot;</span>, <span class="ruby-identifier">d</span>)  <span class="ruby-comment">#=&gt; 2010-10-28 12:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;12:00&quot;</span>, <span class="ruby-identifier">t</span>)  <span class="ruby-comment">#=&gt; 2010-10-29 12:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;12:00&quot;</span>, <span class="ruby-identifier">dt</span>) <span class="ruby-comment">#=&gt; 2010-10-30 12:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;12:00&quot;</span>, <span class="ruby-identifier">md</span>) <span class="ruby-comment">#=&gt; 2010-10-31 12:00:00 -0500</span>
</pre>

<p>If a block is given, the year described in <code>date</code> is converted by the block.  This is specifically designed for handling two digit years. For example, if you wanted to treat all two digit years prior to 70 as the year 2000+ you could write this:</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;01-10-31&quot;</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">year</span><span class="ruby-operator">|</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">year</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">70</span> <span class="ruby-operator">?</span> <span class="ruby-value">2000</span> <span class="ruby-operator">:</span> <span class="ruby-value">1900</span>)}
<span class="ruby-comment">#=&gt; 2001-10-31 00:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;70-10-31&quot;</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">year</span><span class="ruby-operator">|</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">year</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">70</span> <span class="ruby-operator">?</span> <span class="ruby-value">2000</span> <span class="ruby-operator">:</span> <span class="ruby-value">1900</span>)}
<span class="ruby-comment">#=&gt; 1970-10-31 00:00:00 -0500</span>
</pre>

<p>If the upper components of the given time are broken or missing, they are supplied with those of <code>now</code>.  For the lower components, the minimum values (1 or 0) are assumed if broken or missing.  For example:</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-comment"># Suppose it is &quot;Thu Nov 29 14:33:20 2001&quot; now and</span>
<span class="ruby-comment"># your time zone is EST which is GMT-5.</span>
<span class="ruby-identifier">now</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;Thu Nov 29 14:33:20 2001&quot;</span>)
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;16:30&quot;</span>, <span class="ruby-identifier">now</span>)     <span class="ruby-comment">#=&gt; 2001-11-29 16:30:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;7/23&quot;</span>, <span class="ruby-identifier">now</span>)      <span class="ruby-comment">#=&gt; 2001-07-23 00:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;Aug 31&quot;</span>, <span class="ruby-identifier">now</span>)    <span class="ruby-comment">#=&gt; 2001-08-31 00:00:00 -0500</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;Aug 2000&quot;</span>, <span class="ruby-identifier">now</span>)  <span class="ruby-comment">#=&gt; 2000-08-01 00:00:00 -0500</span>
</pre>

<p>Since there are numerous conflicts among locally defined time zone abbreviations all over the world, this method is not intended to understand all of them.  For example, the abbreviation “CST” is used variously as:</p>

<pre>-06:00 in America/Chicago,
-05:00 in America/Havana,
+08:00 in Asia/Harbin,
+09:30 in Australia/Darwin,
+10:30 in Australia/Adelaide,
etc.</pre>

<p>Based on this fact, this method only understands the time zone abbreviations described in RFC 822 and the system time zone, in the order named. (i.e. a definition in RFC 822 overrides the system time zone definition.)  The system time zone is taken from <code>Time.local(year, 1, 1).zone</code> and <code>Time.local(year, 7, 1).zone</code>. If the extracted time zone abbreviation does not match any of them, it is ignored and the given time is regarded as a local time.</p>

<p><a href="ArgumentError.html"><code>ArgumentError</code></a> is raised if <a href="Date.html"><code>Date</code></a>._parse cannot extract information from <code>date</code> or if the <a href="Time.html"><code>Time</code></a> class cannot represent specified date.</p>

<p>This method can be used as a fail-safe for other parsing methods as:</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">rfc2822</span>(<span class="ruby-identifier">date</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">date</span>)
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">httpdate</span>(<span class="ruby-identifier">date</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">date</span>)
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">xmlschema</span>(<span class="ruby-identifier">date</span>) <span class="ruby-keyword">rescue</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">date</span>)
</pre>

<p>A failure of <a href="Time.html#method-c-parse"><code>Time.parse</code></a> should be checked, though.</p>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="parse-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 370</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">parse</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">now</span>=<span class="ruby-keyword">self</span>.<span class="ruby-identifier">now</span>)
  <span class="ruby-identifier">comp</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">block_given?</span>
  <span class="ruby-identifier">d</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">_parse</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">comp</span>)
  <span class="ruby-identifier">year</span> = <span class="ruby-identifier">d</span>[<span class="ruby-value">:year</span>]
  <span class="ruby-identifier">year</span> = <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">year</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">comp</span>
  <span class="ruby-identifier">make_time</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">year</span>, <span class="ruby-identifier">d</span>[<span class="ruby-value">:yday</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:mon</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:mday</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:hour</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:min</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:sec</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:sec_fraction</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:zone</span>], <span class="ruby-identifier">now</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-rfc2822" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">rfc2822</span><span
            class="method-args">(date)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Parses <code>date</code> as date-time defined by RFC 2822 and converts it to a <a href="Time.html"><code>Time</code></a> object.  The format is identical to the date format defined by RFC 822 and updated by RFC 1123.</p>

<p><a href="ArgumentError.html"><code>ArgumentError</code></a> is raised if <code>date</code> is not compliant with RFC 2822 or if the <a href="Time.html"><code>Time</code></a> class cannot represent specified date.</p>

<p>See <a href="Time.html#method-i-rfc2822"><code>rfc2822</code></a> for more information on this format.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">rfc2822</span>(<span class="ruby-string">&quot;Wed, 05 Oct 2011 22:26:12 -0400&quot;</span>)
<span class="ruby-comment">#=&gt; 2010-10-05 22:26:12 -0400</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="rfc2822-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 497</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">rfc2822</span>(<span class="ruby-identifier">date</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-regexp">/\A\s*
      (?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*,\s*)?
      (\d{1,2})\s+
      (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+
      (\d{2,})\s+
      (\d{2})\s*
      :\s*(\d{2})\s*
      (?::\s*(\d{2}))?\s+
      ([+-]\d{4}|
       UT|GMT|EST|EDT|CST|CDT|MST|MDT|PST|PDT|[A-IK-Z])/ix</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">date</span>
    <span class="ruby-comment"># Since RFC 2822 permit comments, the regexp has no right anchor.</span>
    <span class="ruby-identifier">day</span> = <span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">mon</span> = <span class="ruby-constant">MonthValue</span>[<span class="ruby-node">$2</span>.<span class="ruby-identifier">upcase</span>]
    <span class="ruby-identifier">year</span> = <span class="ruby-node">$3</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">short_year_p</span> = <span class="ruby-node">$3</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">3</span>
    <span class="ruby-identifier">hour</span> = <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">min</span> = <span class="ruby-node">$5</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">sec</span> = <span class="ruby-node">$6</span> <span class="ruby-operator">?</span> <span class="ruby-node">$6</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>
    <span class="ruby-identifier">zone</span> = <span class="ruby-node">$7</span>

    <span class="ruby-keyword">if</span> <span class="ruby-identifier">short_year_p</span>
      <span class="ruby-comment"># following year completion is compliant with RFC 2822.</span>
      <span class="ruby-identifier">year</span> = <span class="ruby-keyword">if</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">50</span>
               <span class="ruby-value">2000</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">year</span>
             <span class="ruby-keyword">else</span>
               <span class="ruby-value">1900</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">year</span>
             <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>

    <span class="ruby-identifier">off</span> = <span class="ruby-identifier">zone_offset</span>(<span class="ruby-identifier">zone</span>)
    <span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span> =
      <span class="ruby-identifier">apply_offset</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">off</span>)
    <span class="ruby-identifier">t</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>)
    <span class="ruby-identifier">force_zone!</span>(<span class="ruby-identifier">t</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">off</span>)
    <span class="ruby-identifier">t</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;not RFC 2822 compliant date: #{date.inspect}&quot;</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        
        <div class="aliases">
          Also aliased as: <a href="Time.html#method-c-rfc822">rfc822</a>
        </div>
        

        
      </div>

    
      <div id="method-c-rfc822" class="method-detail method-alias">
        
        <div class="method-heading">
          <span class="method-name">rfc822</span><span
            class="method-args">(date)</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
        </div>

        

        
        <div class="aliases">
          Alias for: <a href="Time.html#method-c-rfc2822">rfc2822</a>
        </div>
        
      </div>

    
      <div id="method-c-strptime" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">strptime</span><span
            class="method-args">(date, format, now=self.now) { |year| ... }</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Works similar to <code>parse</code> except that instead of using a heuristic to detect the format of the input string, you provide a second argument that describes the format of the string.</p>

<p>If a block is given, the year described in <code>date</code> is converted by the block.  For example:</p>

<pre>Time.strptime(...) {|y| y &lt; 100 ? (y &gt;= 69 ? y + 1900 : y + 2000) : y}</pre>

<p>Below is a list of the formatting options:</p>
<dl class="rdoc-list note-list"><dt>%a 
<dd>
<p>The abbreviated weekday name (“Sun”)</p>
</dd><dt>%A 
<dd>
<p>The  full  weekday  name (“Sunday”)</p>
</dd><dt>%b 
<dd>
<p>The abbreviated month name (“Jan”)</p>
</dd><dt>%B 
<dd>
<p>The  full  month  name (“January”)</p>
</dd><dt>%c 
<dd>
<p>The preferred local date and time representation</p>
</dd><dt>%C 
<dd>
<p>Century (20 in 2009)</p>
</dd><dt>%d 
<dd>
<p>Day of the month (01..31)</p>
</dd><dt>%D 
<dd>
<p><a href="Date.html"><code>Date</code></a> (%m/%d/%y)</p>
</dd><dt>%e 
<dd>
<p>Day of the month, blank-padded ( 1..31)</p>
</dd><dt>%F 
<dd>
<p>Equivalent to %Y-%m-%d (the ISO 8601 date format)</p>
</dd><dt>%g 
<dd>
<p>The last two digits of the commercial year</p>
</dd><dt>%G 
<dd>
<p>The week-based year according to ISO-8601 (week 1 starts on Monday and includes January 4)</p>
</dd><dt>%h 
<dd>
<p>Equivalent to %b</p>
</dd><dt>%H 
<dd>
<p>Hour of the day, 24-hour clock (00..23)</p>
</dd><dt>%I 
<dd>
<p>Hour of the day, 12-hour clock (01..12)</p>
</dd><dt>%j 
<dd>
<p>Day of the year (001..366)</p>
</dd><dt>%k 
<dd>
<p>hour, 24-hour clock, blank-padded ( 0..23)</p>
</dd><dt>%l 
<dd>
<p>hour, 12-hour clock, blank-padded ( 0..12)</p>
</dd><dt>%L 
<dd>
<p>Millisecond of the second (000..999)</p>
</dd><dt>%m 
<dd>
<p>Month of the year (01..12)</p>
</dd><dt>%M 
<dd>
<p>Minute of the hour (00..59)</p>
</dd><dt>%n 
<dd>
<p>Newline (n)</p>
</dd><dt>%N 
<dd>
<p>Fractional seconds digits</p>
</dd><dt>%p 
<dd>
<p>Meridian indicator (“AM” or “PM”)</p>
</dd><dt>%P 
<dd>
<p>Meridian indicator (“am” or “pm”)</p>
</dd><dt>%r 
<dd>
<p>time, 12-hour (same as %I:%M:%S %p)</p>
</dd><dt>%R 
<dd>
<p>time, 24-hour (%H:%M)</p>
</dd><dt>%s 
<dd>
<p>Number of seconds since 1970-01-01 00:00:00 UTC.</p>
</dd><dt>%S 
<dd>
<p>Second of the minute (00..60)</p>
</dd><dt>%t 
<dd>
<p>Tab character (t)</p>
</dd><dt>%T 
<dd>
<p>time, 24-hour (%H:%M:%S)</p>
</dd><dt>%u 
<dd>
<p>Day of the week as a decimal, Monday being 1. (1..7)</p>
</dd><dt>%U 
<dd>
<p>Week number of the current year, starting with the first Sunday as the first day of the first week (00..53)</p>
</dd><dt>%v 
<dd>
<p>VMS date (%e-%b-%Y)</p>
</dd><dt>%V 
<dd>
<p>Week number of year according to ISO 8601 (01..53)</p>
</dd><dt>%W 
<dd>
<p>Week  number  of the current year, starting with the first Monday as the first day of the first week (00..53)</p>
</dd><dt>%w 
<dd>
<p>Day of the week (Sunday is 0, 0..6)</p>
</dd><dt>%x 
<dd>
<p>Preferred representation for the date alone, no time</p>
</dd><dt>%X 
<dd>
<p>Preferred representation for the time alone, no date</p>
</dd><dt>%y 
<dd>
<p>Year without a century (00..99)</p>
</dd><dt>%Y 
<dd>
<p>Year which may include century, if provided</p>
</dd><dt>%z 
<dd>
<p><a href="Time.html"><code>Time</code></a> zone as  hour offset from UTC (e.g. +0900)</p>
</dd><dt>%Z 
<dd>
<p><a href="Time.html"><code>Time</code></a> zone name</p>
</dd><dt>%% 
<dd>
<p>Literal “%” character</p>
</dd><dt>%+ 
<dd>
<p>date(1) (%a %b %e %H:%M:%S %Z %Y)</p>
</dd></dl>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">strptime</span>(<span class="ruby-string">&quot;2000-10-31&quot;</span>, <span class="ruby-string">&quot;%Y-%m-%d&quot;</span>) <span class="ruby-comment">#=&gt; 2000-10-31 00:00:00 -0500</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="strptime-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 445</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">strptime</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">format</span>, <span class="ruby-identifier">now</span>=<span class="ruby-keyword">self</span>.<span class="ruby-identifier">now</span>)
  <span class="ruby-identifier">d</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">_strptime</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">format</span>)
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;invalid date or strptime format - `#{date}&#39; `#{format}&#39;&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">d</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">seconds</span> = <span class="ruby-identifier">d</span>[<span class="ruby-value">:seconds</span>]
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">sec_fraction</span> = <span class="ruby-identifier">d</span>[<span class="ruby-value">:sec_fraction</span>]
      <span class="ruby-identifier">usec</span> = <span class="ruby-identifier">sec_fraction</span> <span class="ruby-operator">*</span> <span class="ruby-value">1000000</span>
      <span class="ruby-identifier">usec</span> <span class="ruby-operator">*=</span> <span class="ruby-value">-1</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">seconds</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">usec</span> = <span class="ruby-value">0</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">at</span>(<span class="ruby-identifier">seconds</span>, <span class="ruby-identifier">usec</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">zone</span> = <span class="ruby-identifier">d</span>[<span class="ruby-value">:zone</span>]
      <span class="ruby-identifier">force_zone!</span>(<span class="ruby-identifier">t</span>, <span class="ruby-identifier">zone</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">year</span> = <span class="ruby-identifier">d</span>[<span class="ruby-value">:year</span>]
    <span class="ruby-identifier">year</span> = <span class="ruby-keyword">yield</span>(<span class="ruby-identifier">year</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">block_given?</span>
    <span class="ruby-identifier">yday</span> = <span class="ruby-identifier">d</span>[<span class="ruby-value">:yday</span>]
    <span class="ruby-keyword">if</span> (<span class="ruby-identifier">d</span>[<span class="ruby-value">:cwyear</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">year</span>) <span class="ruby-operator">||</span> ((<span class="ruby-identifier">d</span>[<span class="ruby-value">:cwday</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">d</span>[<span class="ruby-value">:cweek</span>]) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">d</span>[<span class="ruby-value">:mon</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">d</span>[<span class="ruby-value">:mday</span>]))
      <span class="ruby-comment"># make_time doesn&#39;t deal with cwyear/cwday/cweek</span>
      <span class="ruby-keyword">return</span> <span class="ruby-constant">Date</span>.<span class="ruby-identifier">strptime</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">format</span>).<span class="ruby-identifier">to_time</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">if</span> (<span class="ruby-identifier">d</span>[<span class="ruby-value">:wnum0</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">d</span>[<span class="ruby-value">:wnum1</span>]) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">yday</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">d</span>[<span class="ruby-value">:mon</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">d</span>[<span class="ruby-value">:mday</span>])
      <span class="ruby-identifier">yday</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">strptime</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">format</span>).<span class="ruby-identifier">yday</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">t</span> = <span class="ruby-identifier">make_time</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">year</span>, <span class="ruby-identifier">yday</span>, <span class="ruby-identifier">d</span>[<span class="ruby-value">:mon</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:mday</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:hour</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:min</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:sec</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:sec_fraction</span>], <span class="ruby-identifier">d</span>[<span class="ruby-value">:zone</span>], <span class="ruby-identifier">now</span>)
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">t</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-utc" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(year) &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(year, month) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(year, month, day) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(year, month, day, hour) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(year, month, day, hour, min) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(year, month, day, hour, min, sec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(year, month, day, hour, min, sec, usec_with_frac) &rarr; time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc(sec, min, hour, day, month, year, dummy, dummy, dummy, dummy) &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Creates a <a href="Time.html"><code>Time</code></a> object based on given values, interpreted as UTC (GMT). The year must be specified. Other values default to the minimum value for that field (and may be <code>nil</code> or omitted). Months may be specified by numbers from 1 to 12, or by the three-letter <a href="English.html"><code>English</code></a> month names. Hours are specified on a 24-hour clock (0..23). Raises an <a href="ArgumentError.html"><code>ArgumentError</code></a> if any values are out of range. Will also accept ten arguments in the order output by <a href="Time.html#method-i-to_a"><code>Time#to_a</code></a>.</p>

<p><code>sec_with_frac</code> and <code>usec_with_frac</code> can have a fractional part.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)  <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
</pre>
          
          

          
          <div class="method-source-code" id="utc-source">
            <pre>static VALUE
time_s_mkutc(int argc, VALUE *argv, VALUE klass)
{
    struct vtm vtm;

    time_arg(argc, argv, &amp;vtm);
    return time_gmtime(time_new_timew(klass, timegmw(&amp;vtm)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-w3cdtf" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">w3cdtf</span><span
            class="method-args">(date)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>This method converts a W3CDTF string date/time format to <a href="Time.html"><code>Time</code></a> object.</p>

<p>The W3CDTF format is defined here: <a href="http://www.w3.org/TR/NOTE-datetime">www.w3.org/TR/NOTE-datetime</a></p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">w3cdtf</span>(<span class="ruby-string">&#39;2003-02-15T13:50:05-05:00&#39;</span>)
<span class="ruby-comment"># =&gt; 2003-02-15 10:50:05 -0800</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">w3cdtf</span>(<span class="ruby-string">&#39;2003-02-15T13:50:05-05:00&#39;</span>).<span class="ruby-identifier">class</span>
<span class="ruby-comment"># =&gt; Time</span>
</pre>
          
          

          
          <div class="method-source-code" id="w3cdtf-source">
            <pre><span class="ruby-comment"># File lib/rss/rss.rb, line 15</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">w3cdtf</span>(<span class="ruby-identifier">date</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-regexp">/\A\s*
      (-?\d+)-(\d\d)-(\d\d)
      (?:T
      (\d\d):(\d\d)(?::(\d\d))?
      (\.\d+)?
      (Z|[+-]\d\d:\d\d)?)?
      \s*\z/ix</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">date</span> <span class="ruby-keyword">and</span> ((<span class="ruby-node">$5</span> <span class="ruby-keyword">and</span> <span class="ruby-node">$8</span>) <span class="ruby-keyword">or</span> (<span class="ruby-operator">!</span><span class="ruby-node">$5</span> <span class="ruby-keyword">and</span> <span class="ruby-operator">!</span><span class="ruby-node">$8</span>))
    <span class="ruby-identifier">datetime</span> = [<span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$2</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$3</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$5</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-node">$6</span>.<span class="ruby-identifier">to_i</span>]
    <span class="ruby-identifier">usec</span> = <span class="ruby-value">0</span>
    <span class="ruby-identifier">usec</span> = <span class="ruby-node">$7</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">*</span> <span class="ruby-value">1000000</span> <span class="ruby-keyword">if</span> <span class="ruby-node">$7</span>
    <span class="ruby-identifier">zone</span> = <span class="ruby-node">$8</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">zone</span>
      <span class="ruby-identifier">off</span> = <span class="ruby-identifier">zone_offset</span>(<span class="ruby-identifier">zone</span>, <span class="ruby-identifier">datetime</span>[<span class="ruby-value">0</span>])
      <span class="ruby-identifier">datetime</span> = <span class="ruby-identifier">apply_offset</span>(<span class="ruby-operator">*</span>(<span class="ruby-identifier">datetime</span> <span class="ruby-operator">+</span> [<span class="ruby-identifier">off</span>]))
      <span class="ruby-identifier">datetime</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">usec</span>
      <span class="ruby-identifier">time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">datetime</span>)
      <span class="ruby-identifier">force_zone!</span>(<span class="ruby-identifier">time</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">off</span>)
      <span class="ruby-identifier">time</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">datetime</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">usec</span>
      <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">datetime</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;invalid date: #{date.inspect}&quot;</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-xmlschema" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">xmlschema</span><span
            class="method-args">(date)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Parses <code>date</code> as a dateTime defined by the <a href="XML.html"><code>XML</code></a> Schema and converts it to a <a href="Time.html"><code>Time</code></a> object.  The format is a restricted version of the format defined by ISO 8601.</p>

<p><a href="ArgumentError.html"><code>ArgumentError</code></a> is raised if <code>date</code> is not compliant with the format or if the <a href="Time.html"><code>Time</code></a> class cannot represent specified date.</p>

<p>See <a href="Time.html#method-i-xmlschema"><code>xmlschema</code></a> for more information on this format.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">xmlschema</span>(<span class="ruby-string">&quot;2011-10-05T22:26:12-04:00&quot;</span>)
<span class="ruby-comment">#=&gt; 2011-10-05 22:26:12-04:00</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="xmlschema-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 609</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">xmlschema</span>(<span class="ruby-identifier">date</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-regexp">/\A\s*
      (-?\d+)-(\d\d)-(\d\d)
      T
      (\d\d):(\d\d):(\d\d)
      (\.\d+)?
      (Z|[+-]\d\d(?::?\d\d)?)?
      \s*\z/ix</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">date</span>
    <span class="ruby-identifier">year</span> = <span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">mon</span> = <span class="ruby-node">$2</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">day</span> = <span class="ruby-node">$3</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">hour</span> = <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">min</span> = <span class="ruby-node">$5</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">sec</span> = <span class="ruby-node">$6</span>.<span class="ruby-identifier">to_i</span>
    <span class="ruby-identifier">usec</span> = <span class="ruby-value">0</span>
    <span class="ruby-keyword">if</span> <span class="ruby-node">$7</span>
      <span class="ruby-identifier">usec</span> = <span class="ruby-constant">Rational</span>(<span class="ruby-node">$7</span>) <span class="ruby-operator">*</span> <span class="ruby-value">1000000</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">if</span> <span class="ruby-node">$8</span>
      <span class="ruby-identifier">zone</span> = <span class="ruby-node">$8</span>
      <span class="ruby-identifier">off</span> = <span class="ruby-identifier">zone_offset</span>(<span class="ruby-identifier">zone</span>)
      <span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span> =
        <span class="ruby-identifier">apply_offset</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">off</span>)
      <span class="ruby-identifier">t</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">usec</span>)
      <span class="ruby-identifier">force_zone!</span>(<span class="ruby-identifier">t</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">off</span>)
      <span class="ruby-identifier">t</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-keyword">self</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">usec</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;invalid date: #{date.inspect}&quot;</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        
        <div class="aliases">
          Also aliased as: <a href="Time.html#method-c-iso8601">iso8601</a>
        </div>
        

        
      </div>

    
      <div id="method-c-zone_offset" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">zone_offset</span><span
            class="method-args">(zone, year=self.now.year)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Return the number of seconds the specified time zone differs from UTC.</p>

<p><a href="Numeric.html"><code>Numeric</code></a> time zones that include minutes, such as <code>-10:00</code> or <code>+1330</code> will work, as will simpler hour-only time zones like <code>-10</code> or <code>+13</code>.</p>

<p>Textual time zones listed in ZoneOffset are also supported.</p>

<p>If the time zone does not match any of the above, <code>zone_offset</code> will check if the local time zone (both with and without potential Daylight Saving Time changes being in effect) matches <code>zone</code>. Specifying a value for <code>year</code> will change the year used to find the local time zone.</p>

<p>If <code>zone_offset</code> is unable to determine the offset, nil will be returned.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-constant">Time</span>.<span class="ruby-identifier">zone_offset</span>(<span class="ruby-string">&quot;EST&quot;</span>) <span class="ruby-comment">#=&gt; -18000</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="zone_offset-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 78</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">zone_offset</span>(<span class="ruby-identifier">zone</span>, <span class="ruby-identifier">year</span>=<span class="ruby-keyword">self</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">year</span>)
  <span class="ruby-identifier">off</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-identifier">zone</span> = <span class="ruby-identifier">zone</span>.<span class="ruby-identifier">upcase</span>
  <span class="ruby-keyword">if</span> <span class="ruby-regexp">/\A([+-])(\d\d)(:?)(\d\d)(?:\3(\d\d))?\z/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">zone</span>
    <span class="ruby-identifier">off</span> = (<span class="ruby-node">$1</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;-&#39;</span> <span class="ruby-operator">?</span> <span class="ruby-value">-1</span> <span class="ruby-operator">:</span> <span class="ruby-value">1</span>) <span class="ruby-operator">*</span> ((<span class="ruby-node">$2</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">+</span> <span class="ruby-node">$4</span>.<span class="ruby-identifier">to_i</span>) <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">+</span> <span class="ruby-node">$5</span>.<span class="ruby-identifier">to_i</span>)
  <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">zone</span>.<span class="ruby-identifier">match?</span>(<span class="ruby-regexp">/\A[+-]\d\d\z/</span>)
    <span class="ruby-identifier">off</span> = <span class="ruby-identifier">zone</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-value">3600</span>
  <span class="ruby-keyword">elsif</span> <span class="ruby-constant">ZoneOffset</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">zone</span>)
    <span class="ruby-identifier">off</span> = <span class="ruby-constant">ZoneOffset</span>[<span class="ruby-identifier">zone</span>] <span class="ruby-operator">*</span> <span class="ruby-value">3600</span>
  <span class="ruby-keyword">elsif</span> ((<span class="ruby-identifier">t</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">year</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>)).<span class="ruby-identifier">zone</span>.<span class="ruby-identifier">upcase</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">zone</span> <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">false</span>)
    <span class="ruby-identifier">off</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc_offset</span>
  <span class="ruby-keyword">elsif</span> ((<span class="ruby-identifier">t</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">year</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>)).<span class="ruby-identifier">zone</span>.<span class="ruby-identifier">upcase</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">zone</span> <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">false</span>)
    <span class="ruby-identifier">off</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc_offset</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">off</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="private-class-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Private Class Methods</h3>
       </header>

    
      <div id="method-c-apply_offset" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">apply_offset</span><span
            class="method-args">(year, mon, day, hour, min, sec, off)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="apply_offset-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 148</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">apply_offset</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">off</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">off</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
    <span class="ruby-identifier">off</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">off</span>
    <span class="ruby-identifier">off</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">off</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">sec</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">o</span>; <span class="ruby-identifier">o</span>, <span class="ruby-identifier">sec</span> = <span class="ruby-identifier">sec</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>); <span class="ruby-identifier">off</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">off</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">off</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">min</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">o</span>; <span class="ruby-identifier">o</span>, <span class="ruby-identifier">min</span> = <span class="ruby-identifier">min</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>); <span class="ruby-identifier">off</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">off</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">off</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">24</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">hour</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">o</span>; <span class="ruby-identifier">o</span>, <span class="ruby-identifier">hour</span> = <span class="ruby-identifier">hour</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">24</span>); <span class="ruby-identifier">off</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">off</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
      <span class="ruby-identifier">day</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">off</span>
      <span class="ruby-identifier">days</span> = <span class="ruby-identifier">month_days</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>)
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">days</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">days</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">day</span>
        <span class="ruby-identifier">mon</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
        <span class="ruby-keyword">if</span> <span class="ruby-value">12</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">mon</span>
          <span class="ruby-identifier">mon</span> = <span class="ruby-value">1</span>
          <span class="ruby-identifier">year</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
        <span class="ruby-keyword">end</span>
        <span class="ruby-identifier">day</span> = <span class="ruby-value">1</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">elsif</span> <span class="ruby-value">0</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">off</span>
    <span class="ruby-identifier">off</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">off</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">sec</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">o</span>; <span class="ruby-identifier">o</span>, <span class="ruby-identifier">sec</span> = <span class="ruby-identifier">sec</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>); <span class="ruby-identifier">off</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">off</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">off</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">min</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">o</span>; <span class="ruby-identifier">o</span>, <span class="ruby-identifier">min</span> = <span class="ruby-identifier">min</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>); <span class="ruby-identifier">off</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">off</span>, <span class="ruby-identifier">o</span> = <span class="ruby-identifier">off</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">24</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">hour</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">o</span>; <span class="ruby-identifier">o</span>, <span class="ruby-identifier">hour</span> = <span class="ruby-identifier">hour</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-value">24</span>); <span class="ruby-identifier">off</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">off</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-keyword">then</span>
      <span class="ruby-identifier">day</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">off</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span>
        <span class="ruby-identifier">mon</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
        <span class="ruby-keyword">if</span> <span class="ruby-identifier">mon</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span>
          <span class="ruby-identifier">year</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
          <span class="ruby-identifier">mon</span> = <span class="ruby-value">12</span>
        <span class="ruby-keyword">end</span>
        <span class="ruby-identifier">day</span> = <span class="ruby-identifier">month_days</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>)
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">return</span> <span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-force_zone-21" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">force_zone!</span><span
            class="method-args">(t, zone, offset=nil)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="force_zone-21-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 119</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">force_zone!</span>(<span class="ruby-identifier">t</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">offset</span>=<span class="ruby-keyword">nil</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">zone_utc?</span>(<span class="ruby-identifier">zone</span>)
    <span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc</span>
  <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">offset</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">zone_offset</span>(<span class="ruby-identifier">zone</span>)
    <span class="ruby-comment"># Prefer the local timezone over the fixed offset timezone because</span>
    <span class="ruby-comment"># the former is a real timezone and latter is an artificial timezone.</span>
    <span class="ruby-identifier">t</span>.<span class="ruby-identifier">localtime</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc_offset</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">offset</span>
      <span class="ruby-comment"># Use the fixed offset timezone only if the local timezone cannot</span>
      <span class="ruby-comment"># represent the given offset.</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">localtime</span>(<span class="ruby-identifier">offset</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">t</span>.<span class="ruby-identifier">localtime</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-make_time" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">make_time</span><span
            class="method-args">(date, year, yday, mon, day, hour, min, sec, sec_fraction, zone, now)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="make_time-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 192</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">make_time</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">year</span>, <span class="ruby-identifier">yday</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">sec_fraction</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">now</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">year</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">yday</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">mon</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">day</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">hour</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">min</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">sec</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">sec_fraction</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;no time information in #{date.inspect}&quot;</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">off</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">now</span>
    <span class="ruby-identifier">off_year</span> = <span class="ruby-identifier">year</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">now</span>.<span class="ruby-identifier">year</span>
    <span class="ruby-identifier">off</span> = <span class="ruby-identifier">zone_offset</span>(<span class="ruby-identifier">zone</span>, <span class="ruby-identifier">off_year</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">zone</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">yday</span>
    <span class="ruby-keyword">unless</span> (<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">366</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">yday</span>
      <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;yday #{yday} out of range&quot;</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span> = (<span class="ruby-identifier">yday</span><span class="ruby-value">-1</span>).<span class="ruby-identifier">divmod</span>(<span class="ruby-value">31</span>)
    <span class="ruby-identifier">mon</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
    <span class="ruby-identifier">day</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
    <span class="ruby-identifier">t</span> = <span class="ruby-identifier">make_time</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">year</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">sec_fraction</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">now</span>)
    <span class="ruby-identifier">diff</span> = <span class="ruby-identifier">yday</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">yday</span>
    <span class="ruby-keyword">return</span> <span class="ruby-identifier">t</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">diff</span>.<span class="ruby-identifier">zero?</span>
    <span class="ruby-identifier">day</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">diff</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">28</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&gt;</span> (<span class="ruby-identifier">mday</span> = <span class="ruby-identifier">month_days</span>(<span class="ruby-identifier">off_year</span>, <span class="ruby-identifier">mon</span>))
      <span class="ruby-keyword">if</span> (<span class="ruby-identifier">mon</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-value">12</span>
        <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;yday #{yday} out of range&quot;</span>
      <span class="ruby-keyword">end</span>
      <span class="ruby-identifier">day</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">mday</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">return</span> <span class="ruby-identifier">make_time</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">year</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">sec_fraction</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">now</span>)
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">now</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">now</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:getlocal</span>)
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">off</span>
      <span class="ruby-identifier">now</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">getlocal</span>(<span class="ruby-identifier">off</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">now</span>.<span class="ruby-identifier">utc_offset</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">off</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">now</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">getlocal</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">usec</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-identifier">usec</span> = <span class="ruby-identifier">sec_fraction</span> <span class="ruby-operator">*</span> <span class="ruby-value">1000000</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">sec_fraction</span>

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">now</span>
    <span class="ruby-keyword">begin</span>
      <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">year</span>; <span class="ruby-identifier">year</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">year</span>
      <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">mon</span>; <span class="ruby-identifier">mon</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">mon</span>
      <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">day</span>; <span class="ruby-identifier">day</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">day</span>
      <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">hour</span>; <span class="ruby-identifier">hour</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">hour</span>
      <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">min</span>; <span class="ruby-identifier">min</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">min</span>
      <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">sec</span>; <span class="ruby-identifier">sec</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">sec</span>
      <span class="ruby-keyword">break</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">sec_fraction</span>; <span class="ruby-identifier">usec</span> = <span class="ruby-identifier">now</span>.<span class="ruby-identifier">tv_usec</span>
    <span class="ruby-keyword">end</span> <span class="ruby-keyword">until</span> <span class="ruby-keyword">true</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">year</span> <span class="ruby-operator">||=</span> <span class="ruby-value">1970</span>
  <span class="ruby-identifier">mon</span> <span class="ruby-operator">||=</span> <span class="ruby-value">1</span>
  <span class="ruby-identifier">day</span> <span class="ruby-operator">||=</span> <span class="ruby-value">1</span>
  <span class="ruby-identifier">hour</span> <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
  <span class="ruby-identifier">min</span> <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
  <span class="ruby-identifier">sec</span> <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
  <span class="ruby-identifier">usec</span> <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">off_year</span>
    <span class="ruby-identifier">off</span> = <span class="ruby-keyword">nil</span>
    <span class="ruby-identifier">off</span> = <span class="ruby-identifier">zone_offset</span>(<span class="ruby-identifier">zone</span>, <span class="ruby-identifier">year</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">zone</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">off</span>
    <span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span> =
      <span class="ruby-identifier">apply_offset</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">off</span>)
    <span class="ruby-identifier">t</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">usec</span>)
    <span class="ruby-identifier">force_zone!</span>(<span class="ruby-identifier">t</span>, <span class="ruby-identifier">zone</span>, <span class="ruby-identifier">off</span>)
    <span class="ruby-identifier">t</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-keyword">self</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">mon</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">usec</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-month_days" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">month_days</span><span
            class="method-args">(y, m)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="month_days-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 139</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">month_days</span>(<span class="ruby-identifier">y</span>, <span class="ruby-identifier">m</span>)
  <span class="ruby-keyword">if</span> ((<span class="ruby-identifier">y</span> <span class="ruby-operator">%</span> <span class="ruby-value">4</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">y</span> <span class="ruby-operator">%</span> <span class="ruby-value">100</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>)) <span class="ruby-operator">||</span> (<span class="ruby-identifier">y</span> <span class="ruby-operator">%</span> <span class="ruby-value">400</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>)
    <span class="ruby-constant">LeapYearMonthDays</span>[<span class="ruby-identifier">m</span><span class="ruby-value">-1</span>]
  <span class="ruby-keyword">else</span>
    <span class="ruby-constant">CommonYearMonthDays</span>[<span class="ruby-identifier">m</span><span class="ruby-value">-1</span>]
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-zone_utc-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">zone_utc?</span><span
            class="method-args">(zone)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="zone_utc-3F-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 95</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">zone_utc?</span>(<span class="ruby-identifier">zone</span>)
  <span class="ruby-comment"># * +0000</span>
  <span class="ruby-comment">#   In RFC 2822, +0000 indicate a time zone at Universal Time.</span>
  <span class="ruby-comment">#   Europe/Lisbon is &quot;a time zone at Universal Time&quot; in Winter.</span>
  <span class="ruby-comment">#   Atlantic/Reykjavik is &quot;a time zone at Universal Time&quot;.</span>
  <span class="ruby-comment">#   Africa/Dakar is &quot;a time zone at Universal Time&quot;.</span>
  <span class="ruby-comment">#   So +0000 is a local time such as Europe/London, etc.</span>
  <span class="ruby-comment"># * GMT</span>
  <span class="ruby-comment">#   GMT is used as a time zone abbreviation in Europe/London,</span>
  <span class="ruby-comment">#   Africa/Dakar, etc.</span>
  <span class="ruby-comment">#   So it is a local time.</span>
  <span class="ruby-comment">#</span>
  <span class="ruby-comment"># * -0000, -00:00</span>
  <span class="ruby-comment">#   In RFC 2822, -0000 the date-time contains no information about the</span>
  <span class="ruby-comment">#   local time zone.</span>
  <span class="ruby-comment">#   In RFC 3339, -00:00 is used for the time in UTC is known,</span>
  <span class="ruby-comment">#   but the offset to local time is unknown.</span>
  <span class="ruby-comment">#   They are not appropriate for specific time zone such as</span>
  <span class="ruby-comment">#   Europe/London because time zone neutral,</span>
  <span class="ruby-comment">#   So -00:00 and -0000 are treated as UTC.</span>
  <span class="ruby-identifier">zone</span>.<span class="ruby-identifier">match?</span>(<span class="ruby-regexp">/\A(?:-00:00|-0000|-00|UTC|Z|UT)\z/i</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Instance Methods</h3>
       </header>

    
      <div id="method-i-2B" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            time + numeric &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Addition — Adds some number of seconds (possibly fractional) to <em>time</em> and returns that value as a new <a href="Time.html"><code>Time</code></a> object.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>         <span class="ruby-comment">#=&gt; 2007-11-19 08:22:21 -0600</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> (<span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">24</span>)   <span class="ruby-comment">#=&gt; 2007-11-20 08:22:21 -0600</span>
</pre>
          
          

          
          <div class="method-source-code" id="2B-source">
            <pre>static VALUE
time_plus(VALUE time1, VALUE time2)
{
    struct time_object *tobj;
    GetTimeval(time1, tobj);

    if (IsTimeval(time2)) {
        rb_raise(rb_eTypeError, &quot;time + time?&quot;);
    }
    return time_add(tobj, time1, time2, 1);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-2D" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            time - other_time &rarr; float
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            time - numeric    &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Difference — Returns a difference in seconds as a <a href="Float.html"><code>Float</code></a> between <em>time</em> and <code>other_time</code>, or subtracts the given number of seconds in <code>numeric</code> from <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>       <span class="ruby-comment">#=&gt; 2007-11-19 08:23:10 -0600</span>
<span class="ruby-identifier">t2</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">2592000</span>   <span class="ruby-comment">#=&gt; 2007-12-19 08:23:10 -0600</span>
<span class="ruby-identifier">t2</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">t</span>             <span class="ruby-comment">#=&gt; 2592000.0</span>
<span class="ruby-identifier">t2</span> <span class="ruby-operator">-</span> <span class="ruby-value">2592000</span>       <span class="ruby-comment">#=&gt; 2007-11-19 08:23:10 -0600</span>
</pre>
          
          

          
          <div class="method-source-code" id="2D-source">
            <pre>static VALUE
time_minus(VALUE time1, VALUE time2)
{
    struct time_object *tobj;

    GetTimeval(time1, tobj);
    if (IsTimeval(time2)) {
        struct time_object *tobj2;

        GetTimeval(time2, tobj2);
        return rb_Float(rb_time_unmagnify_to_float(wsub(tobj-&gt;timew, tobj2-&gt;timew)));
    }
    return time_add(tobj, time1, time2, -1);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-3C-3D-3E" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            time &lt;=&gt; other_time &rarr; -1, 0, +1, or nil
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Comparison—Compares <code>time</code> with <code>other_time</code>.</p>

<p>-1, 0, +1 or nil depending on whether <code>time</code> is less  than, equal to, or greater than <code>other_time</code>.</p>

<p><code>nil</code> is returned if the two values are incomparable.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>       <span class="ruby-comment">#=&gt; 2007-11-19 08:12:12 -0600</span>
<span class="ruby-identifier">t2</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">2592000</span>   <span class="ruby-comment">#=&gt; 2007-12-19 08:12:12 -0600</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">t2</span>           <span class="ruby-comment">#=&gt; -1</span>
<span class="ruby-identifier">t2</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">t</span>           <span class="ruby-comment">#=&gt; 1</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>       <span class="ruby-comment">#=&gt; 2007-11-19 08:13:38 -0600</span>
<span class="ruby-identifier">t2</span> = <span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.1</span>       <span class="ruby-comment">#=&gt; 2007-11-19 08:13:38 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">nsec</span>             <span class="ruby-comment">#=&gt; 98222999</span>
<span class="ruby-identifier">t2</span>.<span class="ruby-identifier">nsec</span>            <span class="ruby-comment">#=&gt; 198222999</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">t2</span>           <span class="ruby-comment">#=&gt; -1</span>
<span class="ruby-identifier">t2</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">t</span>           <span class="ruby-comment">#=&gt; 1</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">t</span>            <span class="ruby-comment">#=&gt; 0</span>
</pre>
          
          

          
          <div class="method-source-code" id="3C-3D-3E-source">
            <pre>static VALUE
time_cmp(VALUE time1, VALUE time2)
{
    struct time_object *tobj1, *tobj2;
    int n;

    GetTimeval(time1, tobj1);
    if (IsTimeval(time2)) {
        GetTimeval(time2, tobj2);
        n = wcmp(tobj1-&gt;timew, tobj2-&gt;timew);
    }
    else {
        return rb_invcmp(time1, time2);
    }
    if (n == 0) return INT2FIX(0);
    if (n &gt; 0) return INT2FIX(1);
    return INT2FIX(-1);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-as_json" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">as_json</span><span
            class="method-args">(*)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns a hash, that will be turned into a <a href="JSON.html"><code>JSON</code></a> object and represent this object.</p>
          
          

          
          <div class="method-source-code" id="as_json-source">
            <pre><span class="ruby-comment"># File ext/json/lib/json/add/time.rb, line 22</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">as_json</span>(<span class="ruby-operator">*</span>)
  <span class="ruby-identifier">nanoseconds</span> = [ <span class="ruby-identifier">tv_usec</span> <span class="ruby-operator">*</span> <span class="ruby-value">1000</span> ]
  <span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:tv_nsec</span>) <span class="ruby-keyword">and</span> <span class="ruby-identifier">nanoseconds</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">tv_nsec</span>
  <span class="ruby-identifier">nanoseconds</span> = <span class="ruby-identifier">nanoseconds</span>.<span class="ruby-identifier">max</span>
  {
    <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">create_id</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">name</span>,
    <span class="ruby-string">&#39;s&#39;</span>            <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">tv_sec</span>,
    <span class="ruby-string">&#39;n&#39;</span>            <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">nanoseconds</span>,
  }
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-asctime" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            asctime &rarr; string
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a canonical string representation of <em>time</em>.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">asctime</span>   <span class="ruby-comment">#=&gt; &quot;Wed Apr  9 08:56:03 2003&quot;</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">ctime</span>     <span class="ruby-comment">#=&gt; &quot;Wed Apr  9 08:56:03 2003&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="asctime-source">
            <pre>static VALUE
time_asctime(VALUE time)
{
    return strftimev(&quot;%a %b %e %T %Y&quot;, time, rb_usascii_encoding());
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-ceil" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            ceil([ndigits])   &rarr; new_time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Ceils sub seconds to a given precision in decimal digits (0 digits by default). It returns a new <a href="Time.html"><code>Time</code></a> object. <code>ndigits</code> should be zero or a positive integer.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">2010</span>,<span class="ruby-value">3</span>,<span class="ruby-value">30</span>, <span class="ruby-value">5</span>,<span class="ruby-value">43</span>,<span class="ruby-value">25.0123456789r</span>)
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)          <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0123456789Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">ceil</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)     <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:26.0000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">ceil</span>(<span class="ruby-value">0</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:26.0000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">ceil</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">ceil</span>(<span class="ruby-value">2</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0200000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">ceil</span>(<span class="ruby-value">3</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0130000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">ceil</span>(<span class="ruby-value">4</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0124000000Z&quot;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">1999</span>,<span class="ruby-value">12</span>,<span class="ruby-value">31</span>, <span class="ruby-value">23</span>,<span class="ruby-value">59</span>,<span class="ruby-value">59</span>)
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.4</span>).<span class="ruby-identifier">ceil</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:00.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.9</span>).<span class="ruby-identifier">ceil</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:00.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1.4</span>).<span class="ruby-identifier">ceil</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:01.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1.9</span>).<span class="ruby-identifier">ceil</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:01.000Z&quot;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">1999</span>,<span class="ruby-value">12</span>,<span class="ruby-value">31</span>, <span class="ruby-value">23</span>,<span class="ruby-value">59</span>,<span class="ruby-value">59</span>)
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.123456789</span>).<span class="ruby-identifier">ceil</span>(<span class="ruby-value">4</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">6</span>)  <span class="ruby-comment">#=&gt; &quot;1999-12-31T23:59:59.123500Z&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="ceil-source">
            <pre>static VALUE
time_ceil(int argc, VALUE *argv, VALUE time)
{
    VALUE ndigits, v, den;
    struct time_object *tobj;

    if (!rb_check_arity(argc, 0, 1) || NIL_P(ndigits = argv[0]))
        den = INT2FIX(1);
    else
        den = ndigits_denominator(ndigits);

    GetTimeval(time, tobj);
    v = w2v(rb_time_unmagnify(tobj-&gt;timew));

    v = modv(v, den);
    return time_add(tobj, time, subv(den, v), 1);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-ctime" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            ctime   &rarr; string
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a canonical string representation of <em>time</em>.</p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">asctime</span>   <span class="ruby-comment">#=&gt; &quot;Wed Apr  9 08:56:03 2003&quot;</span>
<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">ctime</span>     <span class="ruby-comment">#=&gt; &quot;Wed Apr  9 08:56:03 2003&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="ctime-source">
            <pre>static VALUE
time_asctime(VALUE time)
{
    return strftimev(&quot;%a %b %e %T %Y&quot;, time, rb_usascii_encoding());
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-day" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            day  &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the day of the month (1..n) for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:27:03 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>          <span class="ruby-comment">#=&gt; 19</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">mday</span>         <span class="ruby-comment">#=&gt; 19</span>
</pre>
          
          

          
          <div class="method-source-code" id="day-source">
            <pre>static VALUE
time_mday(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return INT2FIX(tobj-&gt;vtm.mday);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-dst-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            dst?  &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> occurs during Daylight Saving <a href="Time.html"><code>Time</code></a> in its time zone.</p>

<pre class="ruby"><span class="ruby-comment"># CST6CDT:</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;CST&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;CDT&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; true</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-comment"># Asia/Tokyo:</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;JST&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;JST&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; false</span>
</pre>
          
          

          
          <div class="method-source-code" id="dst-3F-source">
            <pre>static VALUE
time_isdst(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    if (tobj-&gt;vtm.isdst == VTM_ISDST_INITVAL) {
        rb_raise(rb_eRuntimeError, &quot;isdst is not set yet&quot;);
    }
    return tobj-&gt;vtm.isdst ? Qtrue : Qfalse;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-eql-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            eql?(other_time)
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> and <code>other_time</code> are both <a href="Time.html"><code>Time</code></a> objects with the same seconds and fractional seconds.</p>
          
          

          
          <div class="method-source-code" id="eql-3F-source">
            <pre>static VALUE
time_eql(VALUE time1, VALUE time2)
{
    struct time_object *tobj1, *tobj2;

    GetTimeval(time1, tobj1);
    if (IsTimeval(time2)) {
        GetTimeval(time2, tobj2);
        return rb_equal(w2v(tobj1-&gt;timew), w2v(tobj2-&gt;timew));
    }
    return Qfalse;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-floor" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            floor([ndigits])   &rarr; new_time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Floors sub seconds to a given precision in decimal digits (0 digits by default). It returns a new <a href="Time.html"><code>Time</code></a> object. <code>ndigits</code> should be zero or a positive integer.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">2010</span>,<span class="ruby-value">3</span>,<span class="ruby-value">30</span>, <span class="ruby-value">5</span>,<span class="ruby-value">43</span>,<span class="ruby-value">25.123456789r</span>)
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)           <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1234567890Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">floor</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)     <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">floor</span>(<span class="ruby-value">0</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">floor</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">floor</span>(<span class="ruby-value">2</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1200000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">floor</span>(<span class="ruby-value">3</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1230000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">floor</span>(<span class="ruby-value">4</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1234000000Z&quot;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">1999</span>,<span class="ruby-value">12</span>,<span class="ruby-value">31</span>, <span class="ruby-value">23</span>,<span class="ruby-value">59</span>,<span class="ruby-value">59</span>)
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.4</span>).<span class="ruby-identifier">floor</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;1999-12-31T23:59:59.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.9</span>).<span class="ruby-identifier">floor</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;1999-12-31T23:59:59.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1.4</span>).<span class="ruby-identifier">floor</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:00.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1.9</span>).<span class="ruby-identifier">floor</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:00.000Z&quot;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">1999</span>,<span class="ruby-value">12</span>,<span class="ruby-value">31</span>, <span class="ruby-value">23</span>,<span class="ruby-value">59</span>,<span class="ruby-value">59</span>)
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.123456789</span>).<span class="ruby-identifier">floor</span>(<span class="ruby-value">4</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">6</span>)  <span class="ruby-comment">#=&gt; &quot;1999-12-31T23:59:59.123400Z&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="floor-source">
            <pre>static VALUE
time_floor(int argc, VALUE *argv, VALUE time)
{
    VALUE ndigits, v, den;
    struct time_object *tobj;

    if (!rb_check_arity(argc, 0, 1) || NIL_P(ndigits = argv[0]))
        den = INT2FIX(1);
    else
        den = ndigits_denominator(ndigits);

    GetTimeval(time, tobj);
    v = w2v(rb_time_unmagnify(tobj-&gt;timew));

    v = modv(v, den);
    return time_add(tobj, time, v, -1);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-friday-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            friday? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents Friday.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">1987</span>, <span class="ruby-value">12</span>, <span class="ruby-value">18</span>)     <span class="ruby-comment">#=&gt; 1987-12-18 00:00:00 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">friday?</span>                        <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="friday-3F-source">
            <pre>static VALUE
time_friday(VALUE time)
{
    wday_p(5);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-getgm" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            getgm  &rarr; new_time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a new <a href="Time.html"><code>Time</code></a> object representing <em>time</em> in UTC.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>                             <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">y</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getgm</span>                        <span class="ruby-comment">#=&gt; 2000-01-02 02:15:01 UTC</span>
<span class="ruby-identifier">y</span>.<span class="ruby-identifier">gmt?</span>                             <span class="ruby-comment">#=&gt; true</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">y</span>                             <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="getgm-source">
            <pre>static VALUE
time_getgmtime(VALUE time)
{
    return time_gmtime(time_dup(time));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-getlocal" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            getlocal &rarr; new_time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            getlocal(utc_offset) &rarr; new_time
          </span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            getlocal(timezone) &rarr; new_time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a new <a href="Time.html"><code>Time</code></a> object representing <em>time</em> in local time (using the local time zone in effect for this process).</p>

<p>If <code>utc_offset</code> is given, it is used instead of the local time. <code>utc_offset</code> can be given as a human-readable string (eg. <code>&quot;+09:00&quot;</code>) or as a number of seconds (eg. <code>32400</code>).</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)  <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                          <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">l</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getlocal</span>                  <span class="ruby-comment">#=&gt; 2000-01-01 14:15:01 -0600</span>
<span class="ruby-identifier">l</span>.<span class="ruby-identifier">utc?</span>                          <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">l</span>                          <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">j</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getlocal</span>(<span class="ruby-string">&quot;+09:00&quot;</span>)        <span class="ruby-comment">#=&gt; 2000-01-02 05:15:01 +0900</span>
<span class="ruby-identifier">j</span>.<span class="ruby-identifier">utc?</span>                          <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">j</span>                          <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">k</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getlocal</span>(<span class="ruby-value">9</span><span class="ruby-operator">*</span><span class="ruby-value">60</span><span class="ruby-operator">*</span><span class="ruby-value">60</span>)         <span class="ruby-comment">#=&gt; 2000-01-02 05:15:01 +0900</span>
<span class="ruby-identifier">k</span>.<span class="ruby-identifier">utc?</span>                          <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">k</span>                          <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="getlocal-source">
            <pre>static VALUE
time_getlocaltime(int argc, VALUE *argv, VALUE time)
{
    VALUE off;

    if (rb_check_arity(argc, 0, 1) &amp;&amp; !NIL_P(off = argv[0])) {
        VALUE zone = off;
        if (maybe_tzobj_p(zone)) {
            VALUE t = time_dup(time);
            if (zone_localtime(off, t)) return t;
        }

        if (NIL_P(off = utc_offset_arg(off))) {
            if (NIL_P(zone = find_timezone(time, zone))) invalid_utc_offset();
            time = time_dup(time);
            if (!zone_localtime(zone, time)) invalid_utc_offset();
            return time;
        }
        else if (off == UTC_ZONE) {
            return time_gmtime(time_dup(time));
        }
        validate_utc_offset(off);

        time = time_dup(time);
        time_set_utc_offset(time, off);
        return time_fixoff(time);
    }

    return time_localtime(time_dup(time));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-getutc" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            getutc &rarr; new_time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a new <a href="Time.html"><code>Time</code></a> object representing <em>time</em> in UTC.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>                             <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">y</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getgm</span>                        <span class="ruby-comment">#=&gt; 2000-01-02 02:15:01 UTC</span>
<span class="ruby-identifier">y</span>.<span class="ruby-identifier">gmt?</span>                             <span class="ruby-comment">#=&gt; true</span>
<span class="ruby-identifier">t</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">y</span>                             <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="getutc-source">
            <pre>static VALUE
time_getgmtime(VALUE time)
{
    return time_gmtime(time_dup(time));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-gmt-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            gmt? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents a time in UTC (GMT).</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>                        <span class="ruby-comment">#=&gt; 2007-11-19 08:15:23 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                              <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                              <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>                        <span class="ruby-comment">#=&gt; 2007-11-19 08:16:03 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>                              <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)       <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>                              <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="gmt-3F-source">
            <pre>static VALUE
time_utc_p(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    if (TZMODE_UTC_P(tobj)) return Qtrue;
    return Qfalse;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-gmt_offset" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            gmt_offset &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the offset in seconds between the timezone of <em>time</em> and UTC.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt_offset</span>                    <span class="ruby-comment">#=&gt; 0</span>
<span class="ruby-identifier">l</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getlocal</span>                  <span class="ruby-comment">#=&gt; 2000-01-01 14:15:01 -0600</span>
<span class="ruby-identifier">l</span>.<span class="ruby-identifier">gmt_offset</span>                    <span class="ruby-comment">#=&gt; -21600</span>
</pre>
          
          

          
          <div class="method-source-code" id="gmt_offset-source">
            <pre>VALUE
rb_time_utc_offset(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);

    if (TZMODE_UTC_P(tobj)) {
        return INT2FIX(0);
    }
    else {
        MAKE_TM(time, tobj);
        return tobj-&gt;vtm.utc_offset;
    }
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-gmtime" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            gmtime    &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Converts <em>time</em> to UTC (GMT), modifying the receiver.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:18:31 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>         <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmtime</span>       <span class="ruby-comment">#=&gt; 2007-11-19 14:18:31 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>         <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:18:51 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>         <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc</span>          <span class="ruby-comment">#=&gt; 2007-11-19 14:18:51 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>         <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="gmtime-source">
            <pre>static VALUE
time_gmtime(VALUE time)
{
    struct time_object *tobj;
    struct vtm vtm;

    GetTimeval(time, tobj);
    if (TZMODE_UTC_P(tobj)) {
        if (tobj-&gt;tm_got)
            return time;
    }
    else {
        time_modify(time);
    }

    vtm.zone = rb_fstring_lit(&quot;UTC&quot;);
    GMTIMEW(tobj-&gt;timew, &amp;vtm);
    tobj-&gt;vtm = vtm;

    tobj-&gt;tm_got = 1;
    TZMODE_SET_UTC(tobj);
    return time;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-gmtoff" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            gmtoff     &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the offset in seconds between the timezone of <em>time</em> and UTC.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt_offset</span>                    <span class="ruby-comment">#=&gt; 0</span>
<span class="ruby-identifier">l</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getlocal</span>                  <span class="ruby-comment">#=&gt; 2000-01-01 14:15:01 -0600</span>
<span class="ruby-identifier">l</span>.<span class="ruby-identifier">gmt_offset</span>                    <span class="ruby-comment">#=&gt; -21600</span>
</pre>
          
          

          
          <div class="method-source-code" id="gmtoff-source">
            <pre>VALUE
rb_time_utc_offset(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);

    if (TZMODE_UTC_P(tobj)) {
        return INT2FIX(0);
    }
    else {
        MAKE_TM(time, tobj);
        return tobj-&gt;vtm.utc_offset;
    }
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-hash" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            hash   &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a hash code for this <a href="Time.html"><code>Time</code></a> object.</p>

<p>See also <a href="Object.html#method-i-hash"><code>Object#hash</code></a>.</p>
          
          

          
          <div class="method-source-code" id="hash-source">
            <pre>static VALUE
time_hash(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    return rb_hash(w2v(tobj-&gt;timew));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-hour" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            hour &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the hour of the day (0..23) for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:26:20 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">hour</span>         <span class="ruby-comment">#=&gt; 8</span>
</pre>
          
          

          
          <div class="method-source-code" id="hour-source">
            <pre>static VALUE
time_hour(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return INT2FIX(tobj-&gt;vtm.hour);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-httpdate" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">httpdate</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns a string which represents the time as RFC 1123 date of HTTP-date defined by RFC 2616:</p>

<pre>day-of-week, DD month-name CCYY hh:mm:ss GMT</pre>

<p>Note that the result is always UTC (GMT).</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">httpdate</span> <span class="ruby-comment"># =&gt; &quot;Thu, 06 Oct 2011 02:26:12 GMT&quot;</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="httpdate-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 701</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">httpdate</span>
  <span class="ruby-identifier">t</span> = <span class="ruby-identifier">dup</span>.<span class="ruby-identifier">utc</span>
  <span class="ruby-identifier">sprintf</span>(<span class="ruby-string">&#39;%s, %02d %s %0*d %02d:%02d:%02d GMT&#39;</span>,
    <span class="ruby-constant">RFC2822_DAY_NAME</span>[<span class="ruby-identifier">t</span>.<span class="ruby-identifier">wday</span>],
    <span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>, <span class="ruby-constant">RFC2822_MONTH_NAME</span>[<span class="ruby-identifier">t</span>.<span class="ruby-identifier">mon</span><span class="ruby-value">-1</span>], <span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-value">5</span> <span class="ruby-operator">:</span> <span class="ruby-value">4</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>,
    <span class="ruby-identifier">t</span>.<span class="ruby-identifier">hour</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">min</span>, <span class="ruby-identifier">t</span>.<span class="ruby-identifier">sec</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-inspect" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            inspect &rarr; string
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a detailed string representing <em>time</em>. Unlike <a href="Time.html#method-i-to_s"><code>to_s</code></a>, preserves nanoseconds in the representation for easier debugging.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">inspect</span>                             <span class="ruby-comment">#=&gt; &quot;2012-11-10 18:16:12.261257655 +0100&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">strftime</span> <span class="ruby-string">&quot;%Y-%m-%d %H:%M:%S.%N %z&quot;</span>  <span class="ruby-comment">#=&gt; &quot;2012-11-10 18:16:12.261257655 +0100&quot;</span>

<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc</span>.<span class="ruby-identifier">inspect</span>                          <span class="ruby-comment">#=&gt; &quot;2012-11-10 17:16:12.261257655 UTC&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">strftime</span> <span class="ruby-string">&quot;%Y-%m-%d %H:%M:%S.%N UTC&quot;</span>  <span class="ruby-comment">#=&gt; &quot;2012-11-10 17:16:12.261257655 UTC&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="inspect-source">
            <pre>static VALUE
time_inspect(VALUE time)
{
    struct time_object *tobj;
    VALUE str, subsec;

    GetTimeval(time, tobj);
    str = strftimev(&quot;%Y-%m-%d %H:%M:%S&quot;, time, rb_usascii_encoding());
    subsec = w2v(wmod(tobj-&gt;timew, WINT2FIXWV(TIME_SCALE)));
    if (FIXNUM_P(subsec) &amp;&amp; FIX2LONG(subsec) == 0) {
    }
    else if (FIXNUM_P(subsec) &amp;&amp; FIX2LONG(subsec) &lt; TIME_SCALE) {
        long len;
        str = rb_enc_sprintf(rb_usascii_encoding(), &quot;%&quot;PRIsVALUE&quot;.%09ld&quot;, str, FIX2LONG(subsec));
        for (len=RSTRING_LEN(str); RSTRING_PTR(str)[len-1] == &#39;0&#39; &amp;&amp; len &gt; 0; len--)
            ;
        rb_str_resize(str, len);
    }
    else {
        rb_str_cat_cstr(str, &quot; &quot;);
        subsec = quov(subsec, INT2FIX(TIME_SCALE));
        rb_str_concat(str, rb_obj_as_string(subsec));
    }
    if (TZMODE_UTC_P(tobj)) {
        rb_str_cat_cstr(str, &quot; UTC&quot;);
    }
    else {
        rb_str_concat(str, strftimev(&quot; %z&quot;, time, rb_usascii_encoding()));
    }
    return str;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-isdst" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            isdst &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> occurs during Daylight Saving <a href="Time.html"><code>Time</code></a> in its time zone.</p>

<pre class="ruby"><span class="ruby-comment"># CST6CDT:</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;CST&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;CDT&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; true</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-comment"># Asia/Tokyo:</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;JST&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">zone</span>    <span class="ruby-comment">#=&gt; &quot;JST&quot;</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">isdst</span>   <span class="ruby-comment">#=&gt; false</span>
  <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">7</span>, <span class="ruby-value">1</span>).<span class="ruby-identifier">dst?</span>    <span class="ruby-comment">#=&gt; false</span>
</pre>
          
          

          
          <div class="method-source-code" id="isdst-source">
            <pre>static VALUE
time_isdst(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    if (tobj-&gt;vtm.isdst == VTM_ISDST_INITVAL) {
        rb_raise(rb_eRuntimeError, &quot;isdst is not set yet&quot;);
    }
    return tobj-&gt;vtm.isdst ? Qtrue : Qfalse;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-iso8601" class="method-detail method-alias">
        
        <div class="method-heading">
          <span class="method-name">iso8601</span><span
            class="method-args">(fraction_digits=0)</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
        </div>

        

        
        <div class="aliases">
          Alias for: <a href="Time.html#method-i-xmlschema">xmlschema</a>
        </div>
        
      </div>

    
      <div id="method-i-localtime" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            localtime &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            localtime(utc_offset) &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Converts <em>time</em> to local time (using the local time zone in effect at the creation time of <em>time</em>) modifying the receiver.</p>

<p>If <code>utc_offset</code> is given, it is used instead of the local time.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">2000</span>, <span class="ruby-string">&quot;jan&quot;</span>, <span class="ruby-value">1</span>, <span class="ruby-value">20</span>, <span class="ruby-value">15</span>, <span class="ruby-value">1</span>) <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                                  <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">t</span>.<span class="ruby-identifier">localtime</span>                             <span class="ruby-comment">#=&gt; 2000-01-01 14:15:01 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                                  <span class="ruby-comment">#=&gt; false</span>

<span class="ruby-identifier">t</span>.<span class="ruby-identifier">localtime</span>(<span class="ruby-string">&quot;+09:00&quot;</span>)                   <span class="ruby-comment">#=&gt; 2000-01-02 05:15:01 +0900</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                                  <span class="ruby-comment">#=&gt; false</span>
</pre>

<p>If <code>utc_offset</code> is not given and <em>time</em> is local time, just returns the receiver.</p>
          
          

          
          <div class="method-source-code" id="localtime-source">
            <pre>static VALUE
time_localtime_m(int argc, VALUE *argv, VALUE time)
{
    VALUE off;

    if (rb_check_arity(argc, 0, 1) &amp;&amp; !NIL_P(off = argv[0])) {
        return time_zonelocal(time, off);
    }

    return time_localtime(time);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-mday" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            mday &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the day of the month (1..n) for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:27:03 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">day</span>          <span class="ruby-comment">#=&gt; 19</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">mday</span>         <span class="ruby-comment">#=&gt; 19</span>
</pre>
          
          

          
          <div class="method-source-code" id="mday-source">
            <pre>static VALUE
time_mday(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return INT2FIX(tobj-&gt;vtm.mday);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-min" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            min &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the minute of the hour (0..59) for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:25:51 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">min</span>          <span class="ruby-comment">#=&gt; 25</span>
</pre>
          
          

          
          <div class="method-source-code" id="min-source">
            <pre>static VALUE
time_min(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return INT2FIX(tobj-&gt;vtm.min);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-mon" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            mon   &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            month &rarr; integer
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the month of the year (1..12) for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:27:30 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">mon</span>          <span class="ruby-comment">#=&gt; 11</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>        <span class="ruby-comment">#=&gt; 11</span>
</pre>
          
          

          
          <div class="method-source-code" id="mon-source">
            <pre>static VALUE
time_mon(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return INT2FIX(tobj-&gt;vtm.mon);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-monday-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            monday? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents Monday.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2003</span>, <span class="ruby-value">8</span>, <span class="ruby-value">4</span>)       <span class="ruby-comment">#=&gt; 2003-08-04 00:00:00 -0500</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">monday?</span>                        <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="monday-3F-source">
            <pre>static VALUE
time_monday(VALUE time)
{
    wday_p(1);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-month" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            month &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the month of the year (1..12) for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:27:30 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">mon</span>          <span class="ruby-comment">#=&gt; 11</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">month</span>        <span class="ruby-comment">#=&gt; 11</span>
</pre>
          
          

          
          <div class="method-source-code" id="month-source">
            <pre>static VALUE
time_mon(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return INT2FIX(tobj-&gt;vtm.mon);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-nsec" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            nsec    &rarr; int
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the number of nanoseconds for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>        <span class="ruby-comment">#=&gt; 2007-11-17 15:18:03 +0900</span>
<span class="ruby-string">&quot;%10.9f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1195280283.536151409&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">nsec</span>              <span class="ruby-comment">#=&gt; 536151406</span>
</pre>

<p>The lowest digits of <a href="Time.html#method-i-to_f"><code>to_f</code></a> and <a href="Time.html#method-i-nsec"><code>nsec</code></a> are different because IEEE 754 double is not accurate enough to represent the exact number of nanoseconds since the Epoch.</p>

<p>The more accurate value is returned by <a href="Time.html#method-i-nsec"><code>nsec</code></a>.</p>
          
          

          
          <div class="method-source-code" id="nsec-source">
            <pre>static VALUE
time_nsec(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    return rb_to_int(w2v(wmulquoll(wmod(tobj-&gt;timew, WINT2WV(TIME_SCALE)), 1000000000, TIME_SCALE)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-rfc2822" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">rfc2822</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns a string which represents the time as date-time defined by RFC 2822:</p>

<pre>day-of-week, DD month-name CCYY hh:mm:ss zone</pre>

<p>where zone is [+-]hhmm.</p>

<p>If <code>self</code> is a UTC time, -0000 is used as zone.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">rfc2822</span>  <span class="ruby-comment"># =&gt; &quot;Wed, 05 Oct 2011 22:26:12 -0400&quot;</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="rfc2822-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 661</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">rfc2822</span>
  <span class="ruby-identifier">sprintf</span>(<span class="ruby-string">&#39;%s, %02d %s %0*d %02d:%02d:%02d &#39;</span>,
    <span class="ruby-constant">RFC2822_DAY_NAME</span>[<span class="ruby-identifier">wday</span>],
    <span class="ruby-identifier">day</span>, <span class="ruby-constant">RFC2822_MONTH_NAME</span>[<span class="ruby-identifier">mon</span><span class="ruby-value">-1</span>], <span class="ruby-identifier">year</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-value">5</span> <span class="ruby-operator">:</span> <span class="ruby-value">4</span>, <span class="ruby-identifier">year</span>,
    <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>) <span class="ruby-operator">&lt;&lt;</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">utc?</span>
    <span class="ruby-string">&#39;-0000&#39;</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">off</span> = <span class="ruby-identifier">utc_offset</span>
    <span class="ruby-identifier">sign</span> = <span class="ruby-identifier">off</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-string">&#39;-&#39;</span> <span class="ruby-operator">:</span> <span class="ruby-string">&#39;+&#39;</span>
    <span class="ruby-identifier">sprintf</span>(<span class="ruby-string">&#39;%s%02d%02d&#39;</span>, <span class="ruby-identifier">sign</span>, <span class="ruby-operator">*</span>(<span class="ruby-identifier">off</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">/</span> <span class="ruby-value">60</span>).<span class="ruby-identifier">divmod</span>(<span class="ruby-value">60</span>))
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        
        <div class="aliases">
          Also aliased as: <a href="Time.html#method-i-rfc822">rfc822</a>
        </div>
        

        
      </div>

    
      <div id="method-i-rfc822" class="method-detail method-alias">
        
        <div class="method-heading">
          <span class="method-name">rfc822</span><span
            class="method-args">()</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
        </div>

        

        
        <div class="aliases">
          Alias for: <a href="Time.html#method-i-rfc2822">rfc2822</a>
        </div>
        
      </div>

    
      <div id="method-i-round" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            round([ndigits])   &rarr; new_time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Rounds sub seconds to a given precision in decimal digits (0 digits by default). It returns a new <a href="Time.html"><code>Time</code></a> object. <code>ndigits</code> should be zero or a positive integer.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">2010</span>,<span class="ruby-value">3</span>,<span class="ruby-value">30</span>, <span class="ruby-value">5</span>,<span class="ruby-value">43</span>,<span class="ruby-value">25.123456789r</span>)
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)           <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1234567890Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">round</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)     <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">round</span>(<span class="ruby-value">0</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.0000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">round</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1000000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">round</span>(<span class="ruby-value">2</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1200000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">round</span>(<span class="ruby-value">3</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1230000000Z&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">round</span>(<span class="ruby-value">4</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">10</span>)  <span class="ruby-comment">#=&gt; &quot;2010-03-30T05:43:25.1235000000Z&quot;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">1999</span>,<span class="ruby-value">12</span>,<span class="ruby-value">31</span>, <span class="ruby-value">23</span>,<span class="ruby-value">59</span>,<span class="ruby-value">59</span>)
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.4</span>).<span class="ruby-identifier">round</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;1999-12-31T23:59:59.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.49</span>).<span class="ruby-identifier">round</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)   <span class="ruby-comment">#=&gt; &quot;1999-12-31T23:59:59.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.5</span>).<span class="ruby-identifier">round</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:00.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1.4</span>).<span class="ruby-identifier">round</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:00.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1.49</span>).<span class="ruby-identifier">round</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)   <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:00.000Z&quot;</span>
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1.5</span>).<span class="ruby-identifier">round</span>.<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">3</span>)    <span class="ruby-comment">#=&gt; &quot;2000-01-01T00:00:01.000Z&quot;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">utc</span>(<span class="ruby-value">1999</span>,<span class="ruby-value">12</span>,<span class="ruby-value">31</span>, <span class="ruby-value">23</span>,<span class="ruby-value">59</span>,<span class="ruby-value">59</span>)
(<span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.123456789</span>).<span class="ruby-identifier">round</span>(<span class="ruby-value">4</span>).<span class="ruby-identifier">iso8601</span>(<span class="ruby-value">6</span>)  <span class="ruby-comment">#=&gt; &quot;1999-12-31T23:59:59.123500Z&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="round-source">
            <pre>static VALUE
time_round(int argc, VALUE *argv, VALUE time)
{
    VALUE ndigits, v, den;
    struct time_object *tobj;

    if (!rb_check_arity(argc, 0, 1) || NIL_P(ndigits = argv[0]))
        den = INT2FIX(1);
    else
        den = ndigits_denominator(ndigits);

    GetTimeval(time, tobj);
    v = w2v(rb_time_unmagnify(tobj-&gt;timew));

    v = modv(v, den);
    if (lt(v, quov(den, INT2FIX(2))))
        return time_add(tobj, time, v, -1);
    else
        return time_add(tobj, time, subv(den, v), 1);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-saturday-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            saturday? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents Saturday.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2006</span>, <span class="ruby-value">6</span>, <span class="ruby-value">10</span>)      <span class="ruby-comment">#=&gt; 2006-06-10 00:00:00 -0500</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">saturday?</span>                      <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="saturday-3F-source">
            <pre>static VALUE
time_saturday(VALUE time)
{
    wday_p(6);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-sec" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            sec &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the second of the minute (0..60) for <em>time</em>.</p>

<p><strong>Note:</strong> Seconds range from zero to 60 to allow the system to inject leap seconds. See <a href="http://en.wikipedia.org/wiki/Leap_second">en.wikipedia.org/wiki/Leap_second</a> for further details.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:25:02 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">sec</span>          <span class="ruby-comment">#=&gt; 2</span>
</pre>
          
          

          
          <div class="method-source-code" id="sec-source">
            <pre>static VALUE
time_sec(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return INT2FIX(tobj-&gt;vtm.sec);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-strftime" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            strftime( string ) &rarr; string
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Formats <em>time</em> according to the directives in the given format string.</p>

<p>The directives begin with a percent (%) character. Any text not listed as a directive will be passed through to the output string.</p>

<p>The directive consists of a percent (%) character, zero or more flags, optional minimum field width, optional modifier and a conversion specifier as follows:</p>

<pre>%&lt;flags&gt;&lt;width&gt;&lt;modifier&gt;&lt;conversion&gt;</pre>

<p>Flags:</p>

<pre>-  don&#39;t pad a numerical output
_  use spaces for padding
0  use zeros for padding
^  upcase the result string
#  change case
:  use colons for %z</pre>

<p>The minimum field width specifies the minimum width.</p>

<p>The modifiers are “E” and “O”. They are ignored.</p>

<p>Format directives:</p>

<pre>Date (Year, Month, Day):
  %Y - Year with century if provided, will pad result at least 4 digits.
          -0001, 0000, 1995, 2009, 14292, etc.
  %C - year / 100 (rounded down such as 20 in 2009)
  %y - year % 100 (00..99)

  %m - Month of the year, zero-padded (01..12)
          %_m  blank-padded ( 1..12)
          %-m  no-padded (1..12)
  %B - The full month name (``January&#39;&#39;)
          %^B  uppercased (``JANUARY&#39;&#39;)
  %b - The abbreviated month name (``Jan&#39;&#39;)
          %^b  uppercased (``JAN&#39;&#39;)
  %h - Equivalent to %b

  %d - Day of the month, zero-padded (01..31)
          %-d  no-padded (1..31)
  %e - Day of the month, blank-padded ( 1..31)

  %j - Day of the year (001..366)

Time (Hour, Minute, Second, Subsecond):
  %H - Hour of the day, 24-hour clock, zero-padded (00..23)
  %k - Hour of the day, 24-hour clock, blank-padded ( 0..23)
  %I - Hour of the day, 12-hour clock, zero-padded (01..12)
  %l - Hour of the day, 12-hour clock, blank-padded ( 1..12)
  %P - Meridian indicator, lowercase (``am&#39;&#39; or ``pm&#39;&#39;)
  %p - Meridian indicator, uppercase (``AM&#39;&#39; or ``PM&#39;&#39;)

  %M - Minute of the hour (00..59)

  %S - Second of the minute (00..60)

  %L - Millisecond of the second (000..999)
       The digits under millisecond are truncated to not produce 1000.
  %N - Fractional seconds digits, default is 9 digits (nanosecond)
          %3N  millisecond (3 digits)
          %6N  microsecond (6 digits)
          %9N  nanosecond (9 digits)
          %12N picosecond (12 digits)
          %15N femtosecond (15 digits)
          %18N attosecond (18 digits)
          %21N zeptosecond (21 digits)
          %24N yoctosecond (24 digits)
       The digits under the specified length are truncated to avoid
       carry up.

Time zone:
  %z - Time zone as hour and minute offset from UTC (e.g. +0900)
          %:z - hour and minute offset from UTC with a colon (e.g. +09:00)
          %::z - hour, minute and second offset from UTC (e.g. +09:00:00)
  %Z - Abbreviated time zone name or similar information.  (OS dependent)

Weekday:
  %A - The full weekday name (``Sunday&#39;&#39;)
          %^A  uppercased (``SUNDAY&#39;&#39;)
  %a - The abbreviated name (``Sun&#39;&#39;)
          %^a  uppercased (``SUN&#39;&#39;)
  %u - Day of the week (Monday is 1, 1..7)
  %w - Day of the week (Sunday is 0, 0..6)

ISO 8601 week-based year and week number:
The first week of YYYY starts with a Monday and includes YYYY-01-04.
The days in the year before the first week are in the last week of
the previous year.
  %G - The week-based year
  %g - The last 2 digits of the week-based year (00..99)
  %V - Week number of the week-based year (01..53)

Week number:
The first week of YYYY that starts with a Sunday or Monday (according to %U
or %W). The days in the year before the first week are in week 0.
  %U - Week number of the year. The week starts with Sunday. (00..53)
  %W - Week number of the year. The week starts with Monday. (00..53)

Seconds since the Epoch:
  %s - Number of seconds since 1970-01-01 00:00:00 UTC.

Literal string:
  %n - Newline character (\n)
  %t - Tab character (\t)
  %% - Literal ``%&#39;&#39; character

Combination:
  %c - date and time (%a %b %e %T %Y)
  %D - Date (%m/%d/%y)
  %F - The ISO 8601 date format (%Y-%m-%d)
  %v - VMS date (%e-%^b-%4Y)
  %x - Same as %D
  %X - Same as %T
  %r - 12-hour time (%I:%M:%S %p)
  %R - 24-hour time (%H:%M)
  %T - 24-hour time (%H:%M:%S)</pre>

<p>This method is similar to strftime() function defined in ISO C and POSIX.</p>

<p>While all directives are locale independent since Ruby 1.9, %Z is platform dependent. So, the result may differ even if the same format string is used in other systems such as C.</p>

<p>%z is recommended over %Z. %Z doesn&#39;t identify the timezone. For example, “CST” is used at America/Chicago (-06:00), America/Havana (-05:00), Asia/Harbin (+08:00), Australia/Darwin (+09:30) and Australia/Adelaide (+10:30). Also, %Z is highly dependent on the operating system. For example, it may generate a non ASCII string on Japanese Windows, i.e. the result can be different to “JST”. So the numeric time zone offset, %z, is recommended.</p>

<p>Examples:</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2007</span>,<span class="ruby-value">11</span>,<span class="ruby-value">19</span>,<span class="ruby-value">8</span>,<span class="ruby-value">37</span>,<span class="ruby-value">48</span>,<span class="ruby-string">&quot;-06:00&quot;</span>) <span class="ruby-comment">#=&gt; 2007-11-19 08:37:48 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;Printed on %m/%d/%Y&quot;</span>)         <span class="ruby-comment">#=&gt; &quot;Printed on 11/19/2007&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;at %I:%M %p&quot;</span>)                 <span class="ruby-comment">#=&gt; &quot;at 08:37 AM&quot;</span>
</pre>

<p>Various ISO 8601 formats:</p>

<pre>%Y%m%d           =&gt; 20071119                  Calendar date (basic)
%F               =&gt; 2007-11-19                Calendar date (extended)
%Y-%m            =&gt; 2007-11                   Calendar date, reduced accuracy, specific month
%Y               =&gt; 2007                      Calendar date, reduced accuracy, specific year
%C               =&gt; 20                        Calendar date, reduced accuracy, specific century
%Y%j             =&gt; 2007323                   Ordinal date (basic)
%Y-%j            =&gt; 2007-323                  Ordinal date (extended)
%GW%V%u          =&gt; 2007W471                  Week date (basic)
%G-W%V-%u        =&gt; 2007-W47-1                Week date (extended)
%GW%V            =&gt; 2007W47                   Week date, reduced accuracy, specific week (basic)
%G-W%V           =&gt; 2007-W47                  Week date, reduced accuracy, specific week (extended)
%H%M%S           =&gt; 083748                    Local time (basic)
%T               =&gt; 08:37:48                  Local time (extended)
%H%M             =&gt; 0837                      Local time, reduced accuracy, specific minute (basic)
%H:%M            =&gt; 08:37                     Local time, reduced accuracy, specific minute (extended)
%H               =&gt; 08                        Local time, reduced accuracy, specific hour
%H%M%S,%L        =&gt; 083748,000                Local time with decimal fraction, comma as decimal sign (basic)
%T,%L            =&gt; 08:37:48,000              Local time with decimal fraction, comma as decimal sign (extended)
%H%M%S.%L        =&gt; 083748.000                Local time with decimal fraction, full stop as decimal sign (basic)
%T.%L            =&gt; 08:37:48.000              Local time with decimal fraction, full stop as decimal sign (extended)
%H%M%S%z         =&gt; 083748-0600               Local time and the difference from UTC (basic)
%T%:z            =&gt; 08:37:48-06:00            Local time and the difference from UTC (extended)
%Y%m%dT%H%M%S%z  =&gt; 20071119T083748-0600      Date and time of day for calendar date (basic)
%FT%T%:z         =&gt; 2007-11-19T08:37:48-06:00 Date and time of day for calendar date (extended)
%Y%jT%H%M%S%z    =&gt; 2007323T083748-0600       Date and time of day for ordinal date (basic)
%Y-%jT%T%:z      =&gt; 2007-323T08:37:48-06:00   Date and time of day for ordinal date (extended)
%GW%V%uT%H%M%S%z =&gt; 2007W471T083748-0600      Date and time of day for week date (basic)
%G-W%V-%uT%T%:z  =&gt; 2007-W47-1T08:37:48-06:00 Date and time of day for week date (extended)
%Y%m%dT%H%M      =&gt; 20071119T0837             Calendar date and local time (basic)
%FT%R            =&gt; 2007-11-19T08:37          Calendar date and local time (extended)
%Y%jT%H%MZ       =&gt; 2007323T0837Z             Ordinal date and UTC of day (basic)
%Y-%jT%RZ        =&gt; 2007-323T08:37Z           Ordinal date and UTC of day (extended)
%GW%V%uT%H%M%z   =&gt; 2007W471T0837-0600        Week date and local time and difference from UTC (basic)
%G-W%V-%uT%R%:z  =&gt; 2007-W47-1T08:37-06:00    Week date and local time and difference from UTC (extended)</pre>
          
          

          
          <div class="method-source-code" id="strftime-source">
            <pre>static VALUE
time_strftime(VALUE time, VALUE format)
{
    struct time_object *tobj;
    const char *fmt;
    long len;
    rb_encoding *enc;
    VALUE tmp;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    StringValue(format);
    if (!rb_enc_str_asciicompat_p(format)) {
        rb_raise(rb_eArgError, &quot;format should have ASCII compatible encoding&quot;);
    }
    tmp = rb_str_tmp_frozen_acquire(format);
    fmt = RSTRING_PTR(tmp);
    len = RSTRING_LEN(tmp);
    enc = rb_enc_get(format);
    if (len == 0) {
        rb_warning(&quot;strftime called with empty format string&quot;);
        return rb_enc_str_new(0, 0, enc);
    }
    else {
        VALUE str = rb_strftime_alloc(fmt, len, enc, time, &amp;tobj-&gt;vtm, tobj-&gt;timew,
                                      TZMODE_UTC_P(tobj));
        rb_str_tmp_frozen_release(format, tmp);
        if (!str) rb_raise(rb_eArgError, &quot;invalid format: %&quot;PRIsVALUE, format);
        return str;
    }
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-subsec" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            subsec    &rarr; number
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the fraction for <em>time</em>.</p>

<p>The return value can be a rational number.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>        <span class="ruby-comment">#=&gt; 2009-03-26 22:33:12 +0900</span>
<span class="ruby-string">&quot;%10.9f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1238074392.940563917&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">subsec</span>            <span class="ruby-comment">#=&gt; (94056401/100000000)</span>
</pre>

<p>The lowest digits of <a href="Time.html#method-i-to_f"><code>to_f</code></a> and <a href="Time.html#method-i-subsec"><code>subsec</code></a> are different because IEEE 754 double is not accurate enough to represent the rational number.</p>

<p>The more accurate value is returned by <a href="Time.html#method-i-subsec"><code>subsec</code></a>.</p>
          
          

          
          <div class="method-source-code" id="subsec-source">
            <pre>static VALUE
time_subsec(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    return quov(w2v(wmod(tobj-&gt;timew, WINT2FIXWV(TIME_SCALE))), INT2FIX(TIME_SCALE));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-succ" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            succ   &rarr; new_time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a new <a href="Time.html"><code>Time</code></a> object, one second later than <em>time</em>. <a href="Time.html#method-i-succ"><code>Time#succ</code></a> is obsolete since 1.9.2 for time is not a discrete value.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>       <span class="ruby-comment">#=&gt; 2007-11-19 08:23:57 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">succ</span>             <span class="ruby-comment">#=&gt; 2007-11-19 08:23:58 -0600</span>
</pre>

<p>Use instead <code>time + 1</code></p>

<pre class="ruby"><span class="ruby-identifier">t</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>              <span class="ruby-comment">#=&gt; 2007-11-19 08:23:58 -0600</span>
</pre>
          
          

          
          <div class="method-source-code" id="succ-source">
            <pre>VALUE
rb_time_succ(VALUE time)
{
    struct time_object *tobj;
    struct time_object *tobj2;

    rb_warn(&quot;Time#succ is obsolete; use time + 1&quot;);
    GetTimeval(time, tobj);
    time = time_new_timew(rb_cTime, wadd(tobj-&gt;timew, WINT2FIXWV(TIME_SCALE)));
    GetTimeval(time, tobj2);
    TZMODE_COPY(tobj2, tobj);
    if (TZMODE_LOCALTIME_P(tobj2) &amp;&amp; maybe_tzobj_p(tobj2-&gt;vtm.zone)) {
        zone_localtime(tobj2-&gt;vtm.zone, time);
    }
    return time;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-sunday-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            sunday? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents Sunday.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">1990</span>, <span class="ruby-value">4</span>, <span class="ruby-value">1</span>)       <span class="ruby-comment">#=&gt; 1990-04-01 00:00:00 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">sunday?</span>                        <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="sunday-3F-source">
            <pre>static VALUE
time_sunday(VALUE time)
{
    wday_p(0);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-thursday-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            thursday? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents Thursday.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">1995</span>, <span class="ruby-value">12</span>, <span class="ruby-value">21</span>)     <span class="ruby-comment">#=&gt; 1995-12-21 00:00:00 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">thursday?</span>                      <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="thursday-3F-source">
            <pre>static VALUE
time_thursday(VALUE time)
{
    wday_p(4);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_a" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_a &rarr; array
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a ten-element <em>array</em> of values for <em>time</em>:</p>

<pre class="ruby">[<span class="ruby-identifier">sec</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">year</span>, <span class="ruby-identifier">wday</span>, <span class="ruby-identifier">yday</span>, <span class="ruby-identifier">isdst</span>, <span class="ruby-identifier">zone</span>]
</pre>

<p>See the individual methods for an explanation of the valid ranges of each value. The ten elements can be passed directly to <a href="Time.html#method-c-utc"><code>Time::utc</code></a> or <a href="Time.html#method-c-local"><code>Time::local</code></a> to create a new <a href="Time.html"><code>Time</code></a> object.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>     <span class="ruby-comment">#=&gt; 2007-11-19 08:36:01 -0600</span>
<span class="ruby-identifier">now</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_a</span>     <span class="ruby-comment">#=&gt; [1, 36, 8, 19, 11, 2007, 1, 323, false, &quot;CST&quot;]</span>
</pre>
          
          

          
          <div class="method-source-code" id="to_a-source">
            <pre>static VALUE
time_to_a(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return rb_ary_new3(10,
                    INT2FIX(tobj-&gt;vtm.sec),
                    INT2FIX(tobj-&gt;vtm.min),
                    INT2FIX(tobj-&gt;vtm.hour),
                    INT2FIX(tobj-&gt;vtm.mday),
                    INT2FIX(tobj-&gt;vtm.mon),
                    tobj-&gt;vtm.year,
                    INT2FIX(tobj-&gt;vtm.wday),
                    INT2FIX(tobj-&gt;vtm.yday),
                    tobj-&gt;vtm.isdst?Qtrue:Qfalse,
                    time_zone(time));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_date" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_date  &rarr;  date
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a <a href="Date.html"><code>Date</code></a> object which denotes self.</p>
          
          

          
          <div class="method-source-code" id="to_date-source">
            <pre>static VALUE
time_to_date(VALUE self)
{
    VALUE y, nth, ret;
    int ry, m, d;

    y = f_year(self);
    m = FIX2INT(f_mon(self));
    d = FIX2INT(f_mday(self));

    decode_year(y, -1, &amp;nth, &amp;ry);

    ret = d_simple_new_internal(cDate,
                                nth, 0,
                                GREGORIAN,
                                ry, m, d,
                                HAVE_CIVIL);
    {
        get_d1(ret);
        set_sg(dat, DEFAULT_SG);
    }
    return ret;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_datetime" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_datetime  &rarr;  datetime
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a <a href="DateTime.html"><code>DateTime</code></a> object which denotes self.</p>
          
          

          
          <div class="method-source-code" id="to_datetime-source">
            <pre>static VALUE
time_to_datetime(VALUE self)
{
    VALUE y, sf, nth, ret;
    int ry, m, d, h, min, s, of;

    y = f_year(self);
    m = FIX2INT(f_mon(self));
    d = FIX2INT(f_mday(self));

    h = FIX2INT(f_hour(self));
    min = FIX2INT(f_min(self));
    s = FIX2INT(f_sec(self));
    if (s == 60)
        s = 59;

    sf = sec_to_ns(f_subsec(self));
    of = FIX2INT(f_utc_offset(self));

    decode_year(y, -1, &amp;nth, &amp;ry);

    ret = d_complex_new_internal(cDateTime,
                                 nth, 0,
                                 0, sf,
                                 of, DEFAULT_SG,
                                 ry, m, d,
                                 h, min, s,
                                 HAVE_CIVIL | HAVE_TIME);
    {
        get_d1(ret);
        set_sg(dat, DEFAULT_SG);
    }
    return ret;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_f" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_f &rarr; float
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the value of <em>time</em> as a floating point number of seconds since the Epoch.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-string">&quot;%10.5f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1270968744.77658&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_i</span>              <span class="ruby-comment">#=&gt; 1270968744</span>
</pre>

<p>Note that IEEE 754 double is not accurate enough to represent the exact number of nanoseconds since the Epoch.</p>
          
          

          
          <div class="method-source-code" id="to_f-source">
            <pre>static VALUE
time_to_f(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    return rb_Float(rb_time_unmagnify_to_float(tobj-&gt;timew));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_i" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_i   &rarr; int
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the value of <em>time</em> as an integer number of seconds since the Epoch.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-string">&quot;%10.5f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1270968656.89607&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_i</span>              <span class="ruby-comment">#=&gt; 1270968656</span>
</pre>
          
          

          
          <div class="method-source-code" id="to_i-source">
            <pre>static VALUE
time_to_i(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    return w2v(wdiv(tobj-&gt;timew, WINT2FIXWV(TIME_SCALE)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_json" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">to_json</span><span
            class="method-args">(*args)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Stores class name (<a href="Time.html"><code>Time</code></a>) with number of seconds since epoch and number of microseconds for <a href="Time.html"><code>Time</code></a> as <a href="JSON.html"><code>JSON</code></a> string</p>
          
          

          
          <div class="method-source-code" id="to_json-source">
            <pre><span class="ruby-comment"># File ext/json/lib/json/add/time.rb, line 35</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_json</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
  <span class="ruby-identifier">as_json</span>.<span class="ruby-identifier">to_json</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_r" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_r &rarr; a_rational
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the value of <em>time</em> as a rational number of seconds since the Epoch.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_r</span>            <span class="ruby-comment">#=&gt; (1270968792716287611/1000000000)</span>
</pre>

<p>This methods is intended to be used to get an accurate value representing the nanoseconds since the Epoch. You can use this method to convert <em>time</em> to another Epoch.</p>
          
          

          
          <div class="method-source-code" id="to_r-source">
            <pre>static VALUE
time_to_r(VALUE time)
{
    struct time_object *tobj;
    VALUE v;

    GetTimeval(time, tobj);
    v = rb_time_unmagnify_to_rational(tobj-&gt;timew);
    if (!RB_TYPE_P(v, T_RATIONAL)) {
        v = rb_Rational1(v);
    }
    return v;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_s" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_s    &rarr; string
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns a string representing <em>time</em>. Equivalent to calling <a href="Time.html#method-i-strftime"><code>strftime</code></a> with the appropriate format string.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_s</span>                              <span class="ruby-comment">#=&gt; &quot;2012-11-10 18:16:12 +0100&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">strftime</span> <span class="ruby-string">&quot;%Y-%m-%d %H:%M:%S %z&quot;</span>   <span class="ruby-comment">#=&gt; &quot;2012-11-10 18:16:12 +0100&quot;</span>

<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc</span>.<span class="ruby-identifier">to_s</span>                          <span class="ruby-comment">#=&gt; &quot;2012-11-10 17:16:12 UTC&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">strftime</span> <span class="ruby-string">&quot;%Y-%m-%d %H:%M:%S UTC&quot;</span>  <span class="ruby-comment">#=&gt; &quot;2012-11-10 17:16:12 UTC&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="to_s-source">
            <pre>static VALUE
time_to_s(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    if (TZMODE_UTC_P(tobj))
        return strftimev(&quot;%Y-%m-%d %H:%M:%S UTC&quot;, time, rb_usascii_encoding());
    else
        return strftimev(&quot;%Y-%m-%d %H:%M:%S %z&quot;, time, rb_usascii_encoding());
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_time" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            to_time  &rarr;  time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns self.</p>
          
          

          
          <div class="method-source-code" id="to_time-source">
            <pre>static VALUE
time_to_time(VALUE self)
{
    return self;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-tuesday-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            tuesday? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents Tuesday.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">1991</span>, <span class="ruby-value">2</span>, <span class="ruby-value">19</span>)      <span class="ruby-comment">#=&gt; 1991-02-19 00:00:00 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">tuesday?</span>                       <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="tuesday-3F-source">
            <pre>static VALUE
time_tuesday(VALUE time)
{
    wday_p(2);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-tv_nsec" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            tv_nsec &rarr; int
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the number of nanoseconds for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>        <span class="ruby-comment">#=&gt; 2007-11-17 15:18:03 +0900</span>
<span class="ruby-string">&quot;%10.9f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1195280283.536151409&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">nsec</span>              <span class="ruby-comment">#=&gt; 536151406</span>
</pre>

<p>The lowest digits of <a href="Time.html#method-i-to_f"><code>to_f</code></a> and <a href="Time.html#method-i-nsec"><code>nsec</code></a> are different because IEEE 754 double is not accurate enough to represent the exact number of nanoseconds since the Epoch.</p>

<p>The more accurate value is returned by <a href="Time.html#method-i-nsec"><code>nsec</code></a>.</p>
          
          

          
          <div class="method-source-code" id="tv_nsec-source">
            <pre>static VALUE
time_nsec(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    return rb_to_int(w2v(wmulquoll(wmod(tobj-&gt;timew, WINT2WV(TIME_SCALE)), 1000000000, TIME_SCALE)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-tv_sec" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            tv_sec &rarr; int
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the value of <em>time</em> as an integer number of seconds since the Epoch.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-string">&quot;%10.5f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1270968656.89607&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_i</span>              <span class="ruby-comment">#=&gt; 1270968656</span>
</pre>
          
          

          
          <div class="method-source-code" id="tv_sec-source">
            <pre>static VALUE
time_to_i(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    return w2v(wdiv(tobj-&gt;timew, WINT2FIXWV(TIME_SCALE)));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-tv_usec" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            tv_usec &rarr; int
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the number of microseconds for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>        <span class="ruby-comment">#=&gt; 2007-11-19 08:03:26 -0600</span>
<span class="ruby-string">&quot;%10.6f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1195481006.775195&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">usec</span>              <span class="ruby-comment">#=&gt; 775195</span>
</pre>
          
          

          
          <div class="method-source-code" id="tv_usec-source">
            <pre>static VALUE
time_usec(VALUE time)
{
    struct time_object *tobj;
    wideval_t w, q, r;

    GetTimeval(time, tobj);

    w = wmod(tobj-&gt;timew, WINT2WV(TIME_SCALE));
    wmuldivmod(w, WINT2FIXWV(1000000), WINT2FIXWV(TIME_SCALE), &amp;q, &amp;r);
    return rb_to_int(w2v(q));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-usec" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            usec    &rarr; int
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the number of microseconds for <em>time</em>.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>        <span class="ruby-comment">#=&gt; 2007-11-19 08:03:26 -0600</span>
<span class="ruby-string">&quot;%10.6f&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">to_f</span>   <span class="ruby-comment">#=&gt; &quot;1195481006.775195&quot;</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">usec</span>              <span class="ruby-comment">#=&gt; 775195</span>
</pre>
          
          

          
          <div class="method-source-code" id="usec-source">
            <pre>static VALUE
time_usec(VALUE time)
{
    struct time_object *tobj;
    wideval_t w, q, r;

    GetTimeval(time, tobj);

    w = wmod(tobj-&gt;timew, WINT2WV(TIME_SCALE));
    wmuldivmod(w, WINT2FIXWV(1000000), WINT2FIXWV(TIME_SCALE), &amp;q, &amp;r);
    return rb_to_int(w2v(q));
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-utc" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            gmtime    &rarr; time
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        <div class="method-heading">
          <span class="method-callseq">
            utc       &rarr; time
          </span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Converts <em>time</em> to UTC (GMT), modifying the receiver.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:18:31 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>         <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmtime</span>       <span class="ruby-comment">#=&gt; 2007-11-19 14:18:31 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>         <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:18:51 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>         <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc</span>          <span class="ruby-comment">#=&gt; 2007-11-19 14:18:51 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>         <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="utc-source">
            <pre>static VALUE
time_gmtime(VALUE time)
{
    struct time_object *tobj;
    struct vtm vtm;

    GetTimeval(time, tobj);
    if (TZMODE_UTC_P(tobj)) {
        if (tobj-&gt;tm_got)
            return time;
    }
    else {
        time_modify(time);
    }

    vtm.zone = rb_fstring_lit(&quot;UTC&quot;);
    GMTIMEW(tobj-&gt;timew, &amp;vtm);
    tobj-&gt;vtm = vtm;

    tobj-&gt;tm_got = 1;
    TZMODE_SET_UTC(tobj);
    return time;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-utc-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            utc? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents a time in UTC (GMT).</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>                        <span class="ruby-comment">#=&gt; 2007-11-19 08:15:23 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                              <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-string">&quot;jan&quot;</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">utc?</span>                              <span class="ruby-comment">#=&gt; true</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>                        <span class="ruby-comment">#=&gt; 2007-11-19 08:16:03 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>                              <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)       <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt?</span>                              <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="utc-3F-source">
            <pre>static VALUE
time_utc_p(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    if (TZMODE_UTC_P(tobj)) return Qtrue;
    return Qfalse;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-utc_offset" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            utc_offset &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the offset in seconds between the timezone of <em>time</em> and UTC.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>,<span class="ruby-value">1</span>,<span class="ruby-value">1</span>,<span class="ruby-value">20</span>,<span class="ruby-value">15</span>,<span class="ruby-value">1</span>)   <span class="ruby-comment">#=&gt; 2000-01-01 20:15:01 UTC</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">gmt_offset</span>                    <span class="ruby-comment">#=&gt; 0</span>
<span class="ruby-identifier">l</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">getlocal</span>                  <span class="ruby-comment">#=&gt; 2000-01-01 14:15:01 -0600</span>
<span class="ruby-identifier">l</span>.<span class="ruby-identifier">gmt_offset</span>                    <span class="ruby-comment">#=&gt; -21600</span>
</pre>
          
          

          
          <div class="method-source-code" id="utc_offset-source">
            <pre>VALUE
rb_time_utc_offset(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);

    if (TZMODE_UTC_P(tobj)) {
        return INT2FIX(0);
    }
    else {
        MAKE_TM(time, tobj);
        return tobj-&gt;vtm.utc_offset;
    }
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-w3cdtf" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">w3cdtf</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>This method converts a <a href="Time.html"><code>Time</code></a> object to a <a href="String.html"><code>String</code></a>. The <a href="String.html"><code>String</code></a> contains the time in W3CDTF date/time format.</p>

<p>The W3CDTF format is defined here: <a href="http://www.w3.org/TR/NOTE-datetime">www.w3.org/TR/NOTE-datetime</a></p>

<pre class="ruby"><span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">w3cdtf</span>
<span class="ruby-comment"># =&gt; &quot;2013-08-26T14:12:10.817124-07:00&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="w3cdtf-source">
            <pre><span class="ruby-comment"># File lib/rss/rss.rb, line 53</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">w3cdtf</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">usec</span>.<span class="ruby-identifier">zero?</span>
    <span class="ruby-identifier">fraction_digits</span> = <span class="ruby-value">0</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">fraction_digits</span> = <span class="ruby-identifier">strftime</span>(<span class="ruby-string">&#39;%6N&#39;</span>).<span class="ruby-identifier">index</span>(<span class="ruby-regexp">/0*\z/</span>)
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">xmlschema</span>(<span class="ruby-identifier">fraction_digits</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-wday" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            wday &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns an integer representing the day of the week, 0..6, with Sunday == 0.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-20 02:35:35 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">wday</span>         <span class="ruby-comment">#=&gt; 2</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">sunday?</span>      <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">monday?</span>      <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">tuesday?</span>     <span class="ruby-comment">#=&gt; true</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">wednesday?</span>   <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">thursday?</span>    <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">friday?</span>      <span class="ruby-comment">#=&gt; false</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">saturday?</span>    <span class="ruby-comment">#=&gt; false</span>
</pre>
          
          

          
          <div class="method-source-code" id="wday-source">
            <pre>static VALUE
time_wday(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    if (tobj-&gt;vtm.wday == VTM_WDAY_INITVAL) {
        VALUE zone = tobj-&gt;vtm.zone;
        if (!NIL_P(zone)) zone_localtime(zone, time);
    }
    return INT2FIX((int)tobj-&gt;vtm.wday);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-wednesday-3F" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            wednesday? &rarr; true or false
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns <code>true</code> if <em>time</em> represents Wednesday.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">1993</span>, <span class="ruby-value">2</span>, <span class="ruby-value">24</span>)      <span class="ruby-comment">#=&gt; 1993-02-24 00:00:00 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">wednesday?</span>                     <span class="ruby-comment">#=&gt; true</span>
</pre>
          
          

          
          <div class="method-source-code" id="wednesday-3F-source">
            <pre>static VALUE
time_wednesday(VALUE time)
{
    wday_p(3);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-xmlschema" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">xmlschema</span><span
            class="method-args">(fraction_digits=0)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns a string which represents the time as a dateTime defined by <a href="XML.html"><code>XML</code></a> Schema:</p>

<pre>CCYY-MM-DDThh:mm:ssTZD
CCYY-MM-DDThh:mm:ss.sssTZD</pre>

<p>where TZD is Z or [+-]hh:mm.</p>

<p>If self is a UTC time, Z is used as TZD.  [+-]hh:mm is used otherwise.</p>

<p><code>fractional_digits</code> specifies a number of digits to use for fractional seconds.  Its default value is 0.</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;time&#39;</span>

<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">iso8601</span>  <span class="ruby-comment"># =&gt; &quot;2011-10-05T22:26:12-04:00&quot;</span>
</pre>

<p>You must require &#39;time&#39; to use this method.</p>
          
          

          
          <div class="method-source-code" id="xmlschema-source">
            <pre><span class="ruby-comment"># File lib/time.rb, line 730</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">xmlschema</span>(<span class="ruby-identifier">fraction_digits</span>=<span class="ruby-value">0</span>)
  <span class="ruby-identifier">fraction_digits</span> = <span class="ruby-identifier">fraction_digits</span>.<span class="ruby-identifier">to_i</span>
  <span class="ruby-identifier">s</span> = <span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;%FT%T&quot;</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">fraction_digits</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
    <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;.%#{fraction_digits}N&quot;</span>)
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">utc?</span> <span class="ruby-operator">?</span> <span class="ruby-string">&#39;Z&#39;</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;%:z&quot;</span>))
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        
        <div class="aliases">
          Also aliased as: <a href="Time.html#method-i-iso8601">iso8601</a>
        </div>
        

        
      </div>

    
      <div id="method-i-yday" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            yday &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns an integer representing the day of the year, 1..366.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:32:31 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">yday</span>         <span class="ruby-comment">#=&gt; 323</span>
</pre>
          
          

          
          <div class="method-source-code" id="yday-source">
            <pre>static VALUE
time_yday(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    if (tobj-&gt;vtm.yday == 0) {
        VALUE zone = tobj-&gt;vtm.zone;
        if (!NIL_P(zone)) zone_localtime(zone, time);
    }
    return INT2FIX(tobj-&gt;vtm.yday);
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-year" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            year &rarr; integer
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the year for <em>time</em> (including the century).</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>   <span class="ruby-comment">#=&gt; 2007-11-19 08:27:51 -0600</span>
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">year</span>         <span class="ruby-comment">#=&gt; 2007</span>
</pre>
          
          

          
          <div class="method-source-code" id="year-source">
            <pre>static VALUE
time_year(VALUE time)
{
    struct time_object *tobj;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);
    return tobj-&gt;vtm.year;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-zone" class="method-detail ">
        
        
        <div class="method-heading">
          <span class="method-callseq">
            zone &rarr; string or timezone
          </span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        
        

        <div class="method-description">
          
          <p>Returns the name of the time zone used for <em>time</em>. As of Ruby 1.8, returns “UTC&#39;&#39; rather than “GMT&#39;&#39; for UTC times.</p>

<pre class="ruby"><span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-value">2000</span>, <span class="ruby-string">&quot;jan&quot;</span>, <span class="ruby-value">1</span>, <span class="ruby-value">20</span>, <span class="ruby-value">15</span>, <span class="ruby-value">1</span>)
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">zone</span>   <span class="ruby-comment">#=&gt; &quot;UTC&quot;</span>
<span class="ruby-identifier">t</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(<span class="ruby-value">2000</span>, <span class="ruby-string">&quot;jan&quot;</span>, <span class="ruby-value">1</span>, <span class="ruby-value">20</span>, <span class="ruby-value">15</span>, <span class="ruby-value">1</span>)
<span class="ruby-identifier">t</span>.<span class="ruby-identifier">zone</span>   <span class="ruby-comment">#=&gt; &quot;CST&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="zone-source">
            <pre>static VALUE
time_zone(VALUE time)
{
    struct time_object *tobj;
    VALUE zone;

    GetTimeval(time, tobj);
    MAKE_TM(time, tobj);

    if (TZMODE_UTC_P(tobj)) {
        return rb_usascii_str_new_cstr(&quot;UTC&quot;);
    }
    zone = tobj-&gt;vtm.zone;
    if (NIL_P(zone))
        return Qnil;

    if (RB_TYPE_P(zone, T_STRING))
        zone = rb_str_dup(zone);
    return zone;
}</pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
  </section>

</main>


<footer id="validator-badges" role="contentinfo">
  <p><a href="https://validator.w3.org/check/referer">Validate</a>
  <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>