1 <!DOCTYPE html> <html> <head> <title>time-span.js</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> time-span.js </h1> </th> <th class="code"> </th> </tr> </thead> <tbody> <tr id="section-1"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-1">¶</a> </div> </td> <td class="code"> <div class="highlight"><pre><span class="cm">/*</span>
2 <span class="cm">* JavaScript TimeSpan Library</span>
3 <span class="cm">*</span>
4 <span class="cm">* Copyright (c) 2010 Michael Stum, Charlie Robbins</span>
5 <span class="cm">* </span>
6 <span class="cm">* Permission is hereby granted, free of charge, to any person obtaining</span>
7 <span class="cm">* a copy of this software and associated documentation files (the</span>
8 <span class="cm">* "Software"), to deal in the Software without restriction, including</span>
9 <span class="cm">* without limitation the rights to use, copy, modify, merge, publish,</span>
10 <span class="cm">* distribute, sublicense, and/or sell copies of the Software, and to</span>
11 <span class="cm">* permit persons to whom the Software is furnished to do so, subject to</span>
12 <span class="cm">* the following conditions:</span>
13 <span class="cm">* </span>
14 <span class="cm">* The above copyright notice and this permission notice shall be</span>
15 <span class="cm">* included in all copies or substantial portions of the Software.</span>
16 <span class="cm">* </span>
17 <span class="cm">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span>
18 <span class="cm">* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span>
19 <span class="cm">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span>
20 <span class="cm">* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE</span>
21 <span class="cm">* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION</span>
22 <span class="cm">* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</span>
23 <span class="cm">* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span>
24 <span class="cm">*/</span></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <h3>Time constants</h3> </td> <td class="code"> <div class="highlight"><pre><span class="kd">var</span> <span class="nx">msecPerSecond</span> <span class="o">=</span> <span class="mi">1000</span><span class="p">,</span>
25 <span class="nx">msecPerMinute</span> <span class="o">=</span> <span class="mi">60000</span><span class="p">,</span>
26 <span class="nx">msecPerHour</span> <span class="o">=</span> <span class="mi">3600000</span><span class="p">,</span>
27 <span class="nx">msecPerDay</span> <span class="o">=</span> <span class="mi">86400000</span><span class="p">;</span></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">¶</a> </div> <h3>Timespan Parsers</h3> </td> <td class="code"> <div class="highlight"><pre><span class="kd">var</span> <span class="nx">timeSpanWithDays</span> <span class="o">=</span> <span class="sr">/^(\d+):(\d+):(\d+):(\d+)(\.\d+)?/</span><span class="p">,</span>
28 <span class="nx">timeSpanNoDays</span> <span class="o">=</span> <span class="sr">/^(\d+):(\d+):(\d+)(\.\d+)?/</span><span class="p">;</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">¶</a> </div> <h3>function TimeSpan (milliseconds, seconds, minutes, hours, days)</h3>
30 <h4>@milliseconds {Number} Number of milliseconds for this instance.</h4>
32 <h4>@seconds {Number} Number of seconds for this instance.</h4>
34 <h4>@minutes {Number} Number of minutes for this instance.</h4>
36 <h4>@hours {Number} Number of hours for this instance.</h4>
38 <h4>@days {Number} Number of days for this instance.</h4>
40 <p>Constructor function for the <code>TimeSpan</code> object which represents a length
41 of positive or negative milliseconds componentized into milliseconds,
42 seconds, hours, and days.</p> </td> <td class="code"> <div class="highlight"><pre><span class="kd">var</span> <span class="nx">TimeSpan</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">TimeSpan</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">milliseconds</span><span class="p">,</span> <span class="nx">seconds</span><span class="p">,</span> <span class="nx">minutes</span><span class="p">,</span> <span class="nx">hours</span><span class="p">,</span> <span class="nx">days</span><span class="p">)</span> <span class="p">{</span>
43 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
45 <span class="k">if</span> <span class="p">(</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">days</span><span class="p">))</span> <span class="p">{</span>
46 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">days</span> <span class="o">*</span> <span class="nx">msecPerDay</span><span class="p">);</span>
47 <span class="p">}</span>
49 <span class="k">if</span> <span class="p">(</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">hours</span><span class="p">))</span> <span class="p">{</span>
50 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">hours</span> <span class="o">*</span> <span class="nx">msecPerHour</span><span class="p">);</span>
51 <span class="p">}</span>
53 <span class="k">if</span> <span class="p">(</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">minutes</span><span class="p">))</span> <span class="p">{</span>
54 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">minutes</span> <span class="o">*</span> <span class="nx">msecPerMinute</span><span class="p">);</span>
55 <span class="p">}</span>
57 <span class="k">if</span> <span class="p">(</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">seconds</span><span class="p">))</span> <span class="p">{</span>
58 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">seconds</span> <span class="o">*</span> <span class="nx">msecPerSecond</span><span class="p">);</span>
59 <span class="p">}</span>
61 <span class="k">if</span> <span class="p">(</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">milliseconds</span><span class="p">))</span> <span class="p">{</span>
62 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="nx">milliseconds</span><span class="p">;</span>
63 <span class="p">}</span>
64 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">¶</a> </div> <h2>Factory methods</h2>
66 <p>Helper methods for creating new TimeSpan objects
67 from various criteria: milliseconds, seconds, minutes,
68 hours, days, strings and other <code>TimeSpan</code> instances.</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">¶</a> </div> <h3>function fromMilliseconds (milliseconds)</h3>
70 <h4>@milliseconds {Number} Amount of milliseconds for the new TimeSpan instance.</h4>
72 <p>Creates a new <code>TimeSpan</code> instance with the specified <code>milliseconds</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">fromMilliseconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">milliseconds</span><span class="p">)</span> <span class="p">{</span>
73 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">milliseconds</span><span class="p">))</span> <span class="p">{</span>
74 <span class="k">return</span><span class="p">;</span>
75 <span class="p">}</span>
77 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="nx">milliseconds</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
78 <span class="p">}</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">¶</a> </div> <h3>function fromSeconds (seconds)</h3>
80 <h4>@milliseconds {Number} Amount of seconds for the new TimeSpan instance.</h4>
82 <p>Creates a new <code>TimeSpan</code> instance with the specified <code>seconds</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">fromSeconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">seconds</span><span class="p">)</span> <span class="p">{</span>
83 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">seconds</span><span class="p">))</span> <span class="p">{</span>
84 <span class="k">return</span><span class="p">;</span>
85 <span class="p">}</span>
87 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">seconds</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
88 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">¶</a> </div> <h3>function fromMinutes (milliseconds)</h3>
90 <h4>@milliseconds {Number} Amount of minutes for the new TimeSpan instance.</h4>
92 <p>Creates a new <code>TimeSpan</code> instance with the specified <code>minutes</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">fromMinutes</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">minutes</span><span class="p">)</span> <span class="p">{</span>
93 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">minutes</span><span class="p">))</span> <span class="p">{</span>
94 <span class="k">return</span><span class="p">;</span>
95 <span class="p">}</span>
97 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">minutes</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
98 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">¶</a> </div> <h3>function fromHours (hours)</h3>
100 <h4>@milliseconds {Number} Amount of hours for the new TimeSpan instance.</h4>
102 <p>Creates a new <code>TimeSpan</code> instance with the specified <code>hours</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">fromHours</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">hours</span><span class="p">)</span> <span class="p">{</span>
103 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">hours</span><span class="p">))</span> <span class="p">{</span>
104 <span class="k">return</span><span class="p">;</span>
105 <span class="p">}</span>
107 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">hours</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
108 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">¶</a> </div> <h3>function fromDays (days)</h3>
110 <h4>@milliseconds {Number} Amount of days for the new TimeSpan instance.</h4>
112 <p>Creates a new <code>TimeSpan</code> instance with the specified <code>days</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">fromDays</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">days</span><span class="p">)</span> <span class="p">{</span>
113 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">days</span><span class="p">))</span> <span class="p">{</span>
114 <span class="k">return</span><span class="p">;</span>
115 <span class="p">}</span>
117 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">days</span><span class="p">);</span>
118 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">¶</a> </div> <h3>function parse (str)</h3>
120 <h4>@str {string} Timespan string to parse.</h4>
122 <p>Creates a new <code>TimeSpan</code> instance from the specified
123 string, <code>str</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">parse</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span>
124 <span class="kd">var</span> <span class="nx">match</span><span class="p">,</span> <span class="nx">milliseconds</span><span class="p">;</span>
126 <span class="kd">function</span> <span class="nx">parseMilliseconds</span> <span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
127 <span class="k">return</span> <span class="nx">value</span> <span class="o">?</span> <span class="nb">parseFloat</span><span class="p">(</span><span class="s1">'0'</span> <span class="o">+</span> <span class="nx">value</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1000</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
128 <span class="p">}</span>
129 </pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">¶</a> </div> <p>If we match against a full TimeSpan: </p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">((</span><span class="nx">match</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="nx">timeSpanWithDays</span><span class="p">)))</span> <span class="p">{</span>
130 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="nx">parseMilliseconds</span><span class="p">(</span><span class="nx">match</span><span class="p">[</span><span class="mi">5</span><span class="p">]),</span> <span class="nx">match</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="nx">match</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="nx">match</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="nx">match</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
131 <span class="p">}</span>
132 </pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">¶</a> </div> <p>If we match against a partial TimeSpan:</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">((</span><span class="nx">match</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="nx">timeSpanNoDays</span><span class="p">)))</span> <span class="p">{</span>
133 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="nx">parseMilliseconds</span><span class="p">(</span><span class="nx">match</span><span class="p">[</span><span class="mi">4</span><span class="p">]),</span> <span class="nx">match</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="nx">match</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="nx">match</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">);</span>
134 <span class="p">}</span>
136 <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
137 <span class="p">};</span>
139 <span class="kd">var</span> <span class="nx">months</span> <span class="o">=</span> <span class="p">[</span><span class="mi">31</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">31</span><span class="p">];</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">¶</a> </div> <p>List of default singular time modifiers and associated
140 computation algoritm. Assumes in order, smallest to greatest
141 performing carry forward additiona / subtraction for each
142 Date-Time component.</p> </td> <td class="code"> <div class="highlight"><pre><span class="kd">var</span> <span class="nx">parsers</span> <span class="o">=</span> <span class="p">{</span>
143 <span class="s1">'milliseconds'</span><span class="o">:</span> <span class="p">{</span>
144 <span class="nx">exp</span><span class="o">:</span> <span class="sr">/(\d+)milli[second]?[s]?/i</span><span class="p">,</span>
145 <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getMilliseconds</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">},</span>
146 <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="nx">date</span><span class="p">.</span><span class="nx">setMilliseconds</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">},</span>
147 <span class="nx">compute</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">delta</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">computed</span><span class="p">)</span> <span class="p">{</span>
148 <span class="kd">var</span> <span class="nx">round</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">></span> <span class="mi">0</span> <span class="o">?</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span> <span class="o">:</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">;</span>
149 <span class="k">if</span> <span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
150 <span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">delta</span> <span class="o">/</span> <span class="mi">1000</span><span class="p">);</span>
151 <span class="nx">computed</span><span class="p">.</span><span class="nx">milliseconds</span> <span class="o">+=</span> <span class="nx">delta</span> <span class="o">%</span> <span class="mi">1000</span><span class="p">;</span>
152 <span class="p">}</span>
154 <span class="k">if</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">milliseconds</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">1000</span><span class="p">)</span> <span class="p">{</span>
155 <span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">milliseconds</span> <span class="o">/</span> <span class="mi">1000</span><span class="p">)</span>
156 <span class="nx">computed</span><span class="p">.</span><span class="nx">milliseconds</span> <span class="o">=</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">milliseconds</span> <span class="o">%</span> <span class="mi">1000</span><span class="p">;</span>
157 <span class="p">}</span>
159 <span class="k">return</span> <span class="nx">computed</span><span class="p">;</span>
160 <span class="p">}</span>
161 <span class="p">},</span>
162 <span class="s1">'seconds'</span><span class="o">:</span> <span class="p">{</span>
163 <span class="nx">exp</span><span class="o">:</span> <span class="sr">/(\d+)second[s]?/i</span><span class="p">,</span>
164 <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getSeconds</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">},</span>
165 <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="nx">date</span><span class="p">.</span><span class="nx">setSeconds</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">},</span>
166 <span class="nx">compute</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">delta</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">computed</span><span class="p">)</span> <span class="p">{</span>
167 <span class="kd">var</span> <span class="nx">round</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">></span> <span class="mi">0</span> <span class="o">?</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span> <span class="o">:</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">;</span>
168 <span class="k">if</span> <span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
169 <span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">delta</span> <span class="o">/</span> <span class="mi">60</span><span class="p">);</span>
170 <span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span> <span class="o">+=</span> <span class="nx">delta</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
171 <span class="p">}</span>
173 <span class="k">if</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">60</span><span class="p">)</span> <span class="p">{</span>
174 <span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span> <span class="o">/</span> <span class="mi">60</span><span class="p">);</span>
175 <span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span> <span class="o">=</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
176 <span class="p">}</span>
178 <span class="k">return</span> <span class="nx">computed</span><span class="p">;</span>
179 <span class="p">}</span>
180 <span class="p">},</span>
181 <span class="s1">'minutes'</span><span class="o">:</span> <span class="p">{</span>
182 <span class="nx">exp</span><span class="o">:</span> <span class="sr">/(\d+)minute[s]?/i</span><span class="p">,</span>
183 <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getMinutes</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">},</span>
184 <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="nx">date</span><span class="p">.</span><span class="nx">setMinutes</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">},</span>
185 <span class="nx">compute</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">delta</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">computed</span><span class="p">)</span> <span class="p">{</span>
186 <span class="kd">var</span> <span class="nx">round</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">></span> <span class="mi">0</span> <span class="o">?</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span> <span class="o">:</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">;</span>
187 <span class="k">if</span> <span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
188 <span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">delta</span> <span class="o">/</span> <span class="mi">60</span><span class="p">);</span>
189 <span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span> <span class="o">+=</span> <span class="nx">delta</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
190 <span class="p">}</span>
192 <span class="k">if</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">60</span><span class="p">)</span> <span class="p">{</span>
193 <span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span> <span class="o">/</span> <span class="mi">60</span><span class="p">);</span>
194 <span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span> <span class="o">=</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
195 <span class="p">}</span>
197 <span class="k">return</span> <span class="nx">computed</span><span class="p">;</span>
198 <span class="p">}</span>
199 <span class="p">},</span>
200 <span class="s1">'hours'</span><span class="o">:</span> <span class="p">{</span>
201 <span class="nx">exp</span><span class="o">:</span> <span class="sr">/(\d+)hour[s]?/i</span><span class="p">,</span>
202 <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getHours</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">},</span>
203 <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="nx">date</span><span class="p">.</span><span class="nx">setHours</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">},</span>
204 <span class="nx">compute</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">delta</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">computed</span><span class="p">)</span> <span class="p">{</span>
205 <span class="kd">var</span> <span class="nx">round</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">></span> <span class="mi">0</span> <span class="o">?</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span> <span class="o">:</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">;</span>
206 <span class="k">if</span> <span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
207 <span class="nx">computed</span><span class="p">.</span><span class="nx">days</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">delta</span> <span class="o">/</span> <span class="mi">24</span><span class="p">);</span>
208 <span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span> <span class="o">+=</span> <span class="nx">delta</span> <span class="o">%</span> <span class="mi">24</span><span class="p">;</span>
209 <span class="p">}</span>
211 <span class="k">if</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">24</span><span class="p">)</span> <span class="p">{</span>
212 <span class="nx">computed</span><span class="p">.</span><span class="nx">days</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span> <span class="o">/</span> <span class="mi">24</span><span class="p">);</span>
213 <span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span> <span class="o">=</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span> <span class="o">%</span> <span class="mi">24</span><span class="p">;</span>
214 <span class="p">}</span>
216 <span class="k">return</span> <span class="nx">computed</span><span class="p">;</span>
217 <span class="p">}</span>
218 <span class="p">},</span>
219 <span class="s1">'days'</span><span class="o">:</span> <span class="p">{</span>
220 <span class="nx">exp</span><span class="o">:</span> <span class="sr">/(\d+)day[s]?/i</span><span class="p">,</span>
221 <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getDate</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">},</span>
222 <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="nx">date</span><span class="p">.</span><span class="nx">setDate</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">},</span>
223 <span class="nx">compute</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">delta</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">computed</span><span class="p">)</span> <span class="p">{</span>
224 <span class="kd">var</span> <span class="nx">sign</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">>=</span> <span class="mi">0</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
225 <span class="nx">opsign</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">>=</span> <span class="mi">0</span> <span class="o">?</span> <span class="o">-</span><span class="mi">1</span> <span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
226 <span class="nx">clean</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
227 <span class="nx">original</span> <span class="o">=</span> <span class="nx">delta</span><span class="p">,</span>
228 <span class="nx">month</span> <span class="o">=</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span><span class="p">,</span>
229 <span class="nx">days</span> <span class="o">=</span> <span class="nx">months</span><span class="p">[</span><span class="nx">month</span><span class="p">];</span>
231 <span class="k">if</span> <span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
232 <span class="k">while</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="o">>=</span> <span class="nx">days</span><span class="p">)</span> <span class="p">{</span>
233 <span class="nx">month</span> <span class="o">+=</span> <span class="nx">sign</span> <span class="o">*</span> <span class="mi">1</span><span class="p">;</span>
234 <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">+=</span> <span class="nx">sign</span> <span class="o">*</span> <span class="mi">1</span><span class="p">;</span>
235 <span class="nx">delta</span> <span class="o">+=</span> <span class="nx">opsign</span> <span class="o">*</span> <span class="nx">days</span><span class="p">;</span>
237 <span class="k">if</span> <span class="p">(</span><span class="nx">month</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="nx">month</span> <span class="o">=</span> <span class="mi">11</span> <span class="p">}</span>
238 <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">month</span> <span class="o">></span> <span class="mi">11</span><span class="p">)</span> <span class="p">{</span> <span class="nx">month</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">}</span>
240 <span class="nx">days</span> <span class="o">=</span> <span class="nx">months</span><span class="p">[</span><span class="nx">month</span><span class="p">];</span>
241 <span class="p">}</span>
243 <span class="nx">computed</span><span class="p">.</span><span class="nx">days</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">sign</span> <span class="o">*</span> <span class="nx">delta</span><span class="p">);</span>
244 <span class="p">}</span>
246 <span class="k">if</span> <span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">days</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
247 <span class="nx">clean</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
248 <span class="p">}</span>
249 <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">days</span> <span class="o">></span> <span class="nx">months</span><span class="p">[</span><span class="nx">computed</span><span class="p">.</span><span class="nx">months</span><span class="p">])</span> <span class="p">{</span>
250 <span class="nx">clean</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
251 <span class="p">}</span>
253 <span class="k">if</span> <span class="p">(</span><span class="nx">clean</span> <span class="o">!==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
254 <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">+=</span> <span class="nx">clean</span><span class="p">;</span>
255 <span class="k">if</span> <span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">=</span> <span class="mi">11</span> <span class="p">}</span>
256 <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">></span> <span class="mi">11</span><span class="p">)</span> <span class="p">{</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">}</span>
257 <span class="nx">computed</span><span class="p">.</span><span class="nx">days</span> <span class="o">=</span> <span class="nx">months</span><span class="p">[</span><span class="nx">computed</span><span class="p">.</span><span class="nx">months</span><span class="p">]</span> <span class="o">+</span> <span class="nx">computed</span><span class="p">.</span><span class="nx">days</span><span class="p">;</span>
258 <span class="p">}</span>
260 <span class="k">return</span> <span class="nx">computed</span><span class="p">;</span>
261 <span class="p">}</span>
262 <span class="p">},</span>
263 <span class="s1">'months'</span><span class="o">:</span> <span class="p">{</span>
264 <span class="nx">exp</span><span class="o">:</span> <span class="sr">/(\d+)month[s]?/i</span><span class="p">,</span>
265 <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getMonth</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">},</span>
266 <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="nx">date</span><span class="p">.</span><span class="nx">setMonth</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">},</span>
267 <span class="nx">compute</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">delta</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">computed</span><span class="p">)</span> <span class="p">{</span>
268 <span class="kd">var</span> <span class="nx">round</span> <span class="o">=</span> <span class="nx">delta</span> <span class="o">></span> <span class="mi">0</span> <span class="o">?</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span> <span class="o">:</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">ceil</span><span class="p">;</span>
269 <span class="k">if</span> <span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
270 <span class="nx">computed</span><span class="p">.</span><span class="nx">years</span> <span class="o">+=</span> <span class="nx">round</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">delta</span> <span class="o">/</span> <span class="mi">12</span><span class="p">);</span>
271 <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">+=</span> <span class="nx">delta</span> <span class="o">%</span> <span class="mi">12</span><span class="p">;</span>
272 <span class="p">}</span>
274 <span class="k">if</span> <span class="p">(</span><span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">></span> <span class="mi">11</span><span class="p">)</span> <span class="p">{</span>
275 <span class="nx">computed</span><span class="p">.</span><span class="nx">years</span> <span class="o">+=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">((</span><span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">12</span><span class="p">);</span>
276 <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">=</span> <span class="p">((</span><span class="nx">computed</span><span class="p">.</span><span class="nx">months</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="mi">12</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
277 <span class="p">}</span>
279 <span class="k">return</span> <span class="nx">computed</span><span class="p">;</span>
280 <span class="p">}</span>
281 <span class="p">},</span>
282 <span class="s1">'years'</span><span class="o">:</span> <span class="p">{</span>
283 <span class="nx">exp</span><span class="o">:</span> <span class="sr">/(\d+)year[s]?/i</span><span class="p">,</span>
284 <span class="nx">get</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">date</span><span class="p">.</span><span class="nx">getFullYear</span><span class="p">(</span><span class="nx">date</span><span class="p">)</span> <span class="p">},</span>
285 <span class="nx">set</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">val</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="p">{</span> <span class="nx">date</span><span class="p">.</span><span class="nx">setFullYear</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">},</span>
286 <span class="nx">compute</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">delta</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">computed</span><span class="p">)</span> <span class="p">{</span>
287 <span class="k">if</span> <span class="p">(</span><span class="nx">delta</span><span class="p">)</span> <span class="p">{</span>
288 <span class="nx">computed</span><span class="p">.</span><span class="nx">years</span> <span class="o">+=</span> <span class="nx">delta</span><span class="p">;</span>
289 <span class="p">}</span>
291 <span class="k">return</span> <span class="nx">computed</span><span class="p">;</span>
292 <span class="p">}</span>
293 <span class="p">}</span>
294 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-15"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-15">¶</a> </div> <p>Compute the list of parser names for
295 later use.</p> </td> <td class="code"> <div class="highlight"><pre><span class="kd">var</span> <span class="nx">parserNames</span> <span class="o">=</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">parsers</span><span class="p">);</span></pre></div> </td> </tr> <tr id="section-16"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-16">¶</a> </div> <h3>function parseDate (str)</h3>
297 <h4>@str {string} String to parse into a date</h4>
299 <p>Parses the specified liberal Date-Time string according to
300 ISO8601 <strong>and</strong>:</p>
303 <li><code>2010-04-03T12:34:15Z+12MINUTES</code></li>
304 <li><code>NOW-4HOURS</code></li>
307 <p>Valid modifiers for the more liberal Date-Time string(s):</p>
309 <pre><code>YEAR, YEARS
315 MILLI, MILLIS, MILLISECOND, MILLISECONDS
316 </code></pre> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">parseDate</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span>
317 <span class="kd">var</span> <span class="nx">simple</span> <span class="o">=</span> <span class="nb">Date</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">),</span>
318 <span class="nx">iso</span> <span class="o">=</span> <span class="s1">'^([^Z]+)'</span><span class="p">,</span>
319 <span class="nx">zulu</span> <span class="o">=</span> <span class="s1">'Z([\\+|\\-])?'</span><span class="p">,</span>
320 <span class="nx">diff</span> <span class="o">=</span> <span class="p">{},</span>
321 <span class="nx">base</span><span class="p">,</span>
322 <span class="nx">sign</span><span class="p">,</span>
323 <span class="nx">complex</span><span class="p">,</span>
324 <span class="nx">inspect</span><span class="p">,</span>
325 <span class="nx">dateTime</span><span class="p">,</span>
326 <span class="nx">modifiers</span><span class="p">;</span>
328 <span class="k">if</span> <span class="p">(</span><span class="sr">/now/i</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">str</span><span class="p">))</span> <span class="p">{</span>
329 <span class="nx">iso</span> <span class="o">=</span> <span class="s1">'^(NOW)'</span><span class="p">;</span>
330 <span class="nx">zulu</span> <span class="o">=</span> <span class="nx">zulu</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/Z/</span><span class="p">,</span> <span class="s1">'NOW'</span><span class="p">);</span>
331 <span class="p">}</span></pre></div> </td> </tr> <tr id="section-17"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-17">¶</a> </div> <p>If Date string supplied actually conforms
332 to UTC Time (ISO8601), return a new Date.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">isNaN</span><span class="p">(</span><span class="nx">simple</span><span class="p">))</span> <span class="p">{</span>
333 <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="nx">simple</span><span class="p">);</span>
334 <span class="p">}</span>
335 </pre></div> </td> </tr> <tr id="section-18"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-18">¶</a> </div> <p>Create the <code>RegExp</code> for the end component
336 of the target <code>str</code> to parse.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">parserNames</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">group</span><span class="p">)</span> <span class="p">{</span>
337 <span class="nx">zulu</span> <span class="o">+=</span> <span class="s1">'(\\d+[a-zA-Z]+)?'</span><span class="p">;</span>
338 <span class="p">});</span>
339 </pre></div> </td> </tr> <tr id="section-19"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-19">¶</a> </div> <p>Parse the <code>ISO8601</code> component, and the end
340 component from the target <code>str</code>.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">dateTime</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="k">new</span> <span class="nb">RegExp</span><span class="p">(</span><span class="nx">iso</span><span class="p">,</span> <span class="s1">'i'</span><span class="p">));</span>
341 <span class="nx">modifiers</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="k">new</span> <span class="nb">RegExp</span><span class="p">(</span><span class="nx">zulu</span><span class="p">,</span> <span class="s1">'i'</span><span class="p">));</span>
342 </pre></div> </td> </tr> <tr id="section-20"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-20">¶</a> </div> <p>If there was no match on either part then
343 it must be a bad value.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">dateTime</span> <span class="o">||</span> <span class="o">!</span><span class="nx">modifiers</span><span class="p">)</span> <span class="p">{</span>
344 <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
345 <span class="p">}</span>
346 </pre></div> </td> </tr> <tr id="section-21"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-21">¶</a> </div> <p>Create a new <code>Date</code> object from the <code>ISO8601</code>
347 component of the target <code>str</code>.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">base</span> <span class="o">=</span> <span class="sr">/now/i</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">dateTime</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">?</span> <span class="nb">Date</span><span class="p">.</span><span class="nx">now</span><span class="p">()</span> <span class="o">:</span> <span class="nb">Date</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">dateTime</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
348 <span class="nx">complex</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="nx">base</span><span class="p">);</span>
349 <span class="nx">sign</span> <span class="o">=</span> <span class="nx">modifiers</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="s1">'+'</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
350 </pre></div> </td> </tr> <tr id="section-22"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-22">¶</a> </div> <p>Parse the individual component spans (months, years, etc)
351 from the modifier strings that we parsed from the end
352 of the target <code>str</code>.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">modifiers</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">2</span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="nb">Boolean</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">modifier</span><span class="p">)</span> <span class="p">{</span>
353 <span class="nx">parserNames</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
354 <span class="kd">var</span> <span class="nx">match</span><span class="p">;</span>
355 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">match</span> <span class="o">=</span> <span class="nx">modifier</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="nx">parsers</span><span class="p">[</span><span class="nx">name</span><span class="p">].</span><span class="nx">exp</span><span class="p">)))</span> <span class="p">{</span>
356 <span class="k">return</span><span class="p">;</span>
357 <span class="p">}</span>
359 <span class="nx">diff</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="nx">sign</span> <span class="o">*</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">match</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">10</span><span class="p">);</span>
360 <span class="p">})</span>
361 <span class="p">});</span>
362 </pre></div> </td> </tr> <tr id="section-23"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-23">¶</a> </div> <p>Compute the total <code>diff</code> by iteratively computing
363 the partial components from smallest to largest.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="kd">var</span> <span class="nx">computed</span> <span class="o">=</span> <span class="p">{</span>
364 <span class="nx">milliseconds</span><span class="o">:</span> <span class="nx">complex</span><span class="p">.</span><span class="nx">getMilliseconds</span><span class="p">(),</span>
365 <span class="nx">seconds</span><span class="o">:</span> <span class="nx">complex</span><span class="p">.</span><span class="nx">getSeconds</span><span class="p">(),</span>
366 <span class="nx">minutes</span><span class="o">:</span> <span class="nx">complex</span><span class="p">.</span><span class="nx">getMinutes</span><span class="p">(),</span>
367 <span class="nx">hours</span><span class="o">:</span> <span class="nx">complex</span><span class="p">.</span><span class="nx">getHours</span><span class="p">(),</span>
368 <span class="nx">days</span><span class="o">:</span> <span class="nx">complex</span><span class="p">.</span><span class="nx">getDate</span><span class="p">(),</span>
369 <span class="nx">months</span><span class="o">:</span> <span class="nx">complex</span><span class="p">.</span><span class="nx">getMonth</span><span class="p">(),</span>
370 <span class="nx">years</span><span class="o">:</span> <span class="nx">complex</span><span class="p">.</span><span class="nx">getFullYear</span><span class="p">()</span>
371 <span class="p">};</span>
373 <span class="nx">parserNames</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
374 <span class="nx">computed</span> <span class="o">=</span> <span class="nx">parsers</span><span class="p">[</span><span class="nx">name</span><span class="p">].</span><span class="nx">compute</span><span class="p">(</span><span class="nx">diff</span><span class="p">[</span><span class="nx">name</span><span class="p">],</span> <span class="nx">complex</span><span class="p">,</span> <span class="nx">computed</span><span class="p">);</span>
375 <span class="p">});</span>
377 <span class="k">return</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">(</span>
378 <span class="nb">Date</span><span class="p">.</span><span class="nx">UTC</span><span class="p">(</span>
379 <span class="nx">computed</span><span class="p">.</span><span class="nx">years</span><span class="p">,</span>
380 <span class="nx">computed</span><span class="p">.</span><span class="nx">months</span><span class="p">,</span>
381 <span class="nx">computed</span><span class="p">.</span><span class="nx">days</span><span class="p">,</span>
382 <span class="nx">computed</span><span class="p">.</span><span class="nx">hours</span><span class="p">,</span>
383 <span class="nx">computed</span><span class="p">.</span><span class="nx">minutes</span><span class="p">,</span>
384 <span class="nx">computed</span><span class="p">.</span><span class="nx">seconds</span><span class="p">,</span>
385 <span class="nx">computed</span><span class="p">.</span><span class="nx">milliseconds</span>
386 <span class="p">)</span>
387 <span class="p">);</span>
388 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-24"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-24">¶</a> </div> <h3>function fromDates (start, end, abs)</h3>
390 <h4>@start {Date} Start date of the <code>TimeSpan</code> instance to return</h4>
392 <h4>@end {Date} End date of the <code>TimeSpan</code> instance to return</h4>
394 <h4>@abs {boolean} Value indicating to return an absolute value</h4>
396 <p>Returns a new <code>TimeSpan</code> instance representing the difference between
397 the <code>start</code> and <code>end</code> Dates.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">fromDates</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">start</span><span class="p">,</span> <span class="nx">end</span><span class="p">,</span> <span class="nx">abs</span><span class="p">)</span> <span class="p">{</span>
398 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">start</span> <span class="k">instanceof</span> <span class="nb">Date</span><span class="p">)</span> <span class="p">{</span>
399 <span class="nx">start</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">parseDate</span><span class="p">(</span><span class="nx">start</span><span class="p">);</span>
400 <span class="p">}</span>
402 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">end</span> <span class="k">instanceof</span> <span class="nb">Date</span><span class="p">)</span> <span class="p">{</span>
403 <span class="nx">end</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">parseDate</span><span class="p">(</span><span class="nx">end</span><span class="p">);</span>
404 <span class="p">}</span>
406 <span class="kd">var</span> <span class="nx">differenceMsecs</span> <span class="o">=</span> <span class="nx">end</span><span class="p">.</span><span class="nx">valueOf</span><span class="p">()</span> <span class="o">-</span> <span class="nx">start</span><span class="p">.</span><span class="nx">valueOf</span><span class="p">();</span>
407 <span class="k">if</span> <span class="p">(</span><span class="nx">abs</span><span class="p">)</span> <span class="p">{</span>
408 <span class="nx">differenceMsecs</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">differenceMsecs</span><span class="p">);</span>
409 <span class="p">}</span>
411 <span class="k">return</span> <span class="k">new</span> <span class="nx">TimeSpan</span><span class="p">(</span><span class="nx">differenceMsecs</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
412 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-25"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-25">¶</a> </div> <h2>Module Helpers</h2>
414 <p>Module-level helpers for various utilities such as:
415 instanceOf, parsability, and cloning.</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-26"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-26">¶</a> </div> <h3>function test (str)</h3>
417 <h4>@str {string} String value to test if it is a TimeSpan</h4>
419 <p>Returns a value indicating if the specified string, <code>str</code>,
420 is a parsable <code>TimeSpan</code> value.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">test</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span>
421 <span class="k">return</span> <span class="nx">timeSpanWithDays</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="o">||</span> <span class="nx">timeSpanNoDays</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
422 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-27"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-27">¶</a> </div> <h3>function instanceOf (timeSpan)</h3>
424 <h4>@timeSpan {Object} Object to check TimeSpan quality.</h4>
426 <p>Returns a value indicating if the specified <code>timeSpan</code> is
427 in fact a <code>TimeSpan</code> instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">instanceOf</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">timeSpan</span><span class="p">)</span> <span class="p">{</span>
428 <span class="k">return</span> <span class="nx">timeSpan</span> <span class="k">instanceof</span> <span class="nx">TimeSpan</span><span class="p">;</span>
429 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-28"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-28">¶</a> </div> <h3>function clone (timeSpan)</h3>
431 <h4>@timeSpan {TimeSpan} TimeSpan object to clone.</h4>
433 <p>Returns a new <code>TimeSpan</code> instance with the same value
434 as the <code>timeSpan</code> object supplied.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">exports</span><span class="p">.</span><span class="nx">clone</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">timeSpan</span><span class="p">)</span> <span class="p">{</span>
435 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">timeSpan</span> <span class="k">instanceof</span> <span class="nx">TimeSpan</span><span class="p">))</span> <span class="p">{</span>
436 <span class="k">return</span><span class="p">;</span>
437 <span class="p">}</span>
439 <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">fromMilliseconds</span><span class="p">(</span><span class="nx">timeSpan</span><span class="p">.</span><span class="nx">totalMilliseconds</span><span class="p">());</span>
440 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-29"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-29">¶</a> </div> <h2>Addition</h2>
442 <p>Methods for adding <code>TimeSpan</code> instances,
443 milliseconds, seconds, hours, and days to other
444 <code>TimeSpan</code> instances.</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-30"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-30">¶</a> </div> <h3>function add (timeSpan)</h3>
446 <h4>@timeSpan {TimeSpan} TimeSpan to add to this instance</h4>
448 <p>Adds the specified <code>timeSpan</code> to this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">timeSpan</span><span class="p">)</span> <span class="p">{</span>
449 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">timeSpan</span> <span class="k">instanceof</span> <span class="nx">TimeSpan</span><span class="p">))</span> <span class="p">{</span>
450 <span class="k">return</span><span class="p">;</span>
451 <span class="p">}</span>
453 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="nx">timeSpan</span><span class="p">.</span><span class="nx">totalMilliseconds</span><span class="p">();</span>
454 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-31"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-31">¶</a> </div> <h3>function addMilliseconds (milliseconds)</h3>
456 <h4>@milliseconds {Number} Number of milliseconds to add.</h4>
458 <p>Adds the specified <code>milliseconds</code> to this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addMilliseconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">milliseconds</span><span class="p">)</span> <span class="p">{</span>
459 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">milliseconds</span><span class="p">))</span> <span class="p">{</span>
460 <span class="k">return</span><span class="p">;</span>
461 <span class="p">}</span>
463 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="nx">milliseconds</span><span class="p">;</span>
464 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-32"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-32">¶</a> </div> <h3>function addSeconds (seconds)</h3>
466 <h4>@seconds {Number} Number of seconds to add.</h4>
468 <p>Adds the specified <code>seconds</code> to this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addSeconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">seconds</span><span class="p">)</span> <span class="p">{</span>
469 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">seconds</span><span class="p">))</span> <span class="p">{</span>
470 <span class="k">return</span><span class="p">;</span>
471 <span class="p">}</span>
473 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">seconds</span> <span class="o">*</span> <span class="nx">msecPerSecond</span><span class="p">);</span>
474 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-33"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-33">¶</a> </div> <h3>function addMinutes (minutes)</h3>
476 <h4>@minutes {Number} Number of minutes to add.</h4>
478 <p>Adds the specified <code>minutes</code> to this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addMinutes</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">minutes</span><span class="p">)</span> <span class="p">{</span>
479 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">minutes</span><span class="p">))</span> <span class="p">{</span>
480 <span class="k">return</span><span class="p">;</span>
481 <span class="p">}</span>
483 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">minutes</span> <span class="o">*</span> <span class="nx">msecPerMinute</span><span class="p">);</span>
484 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-34"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-34">¶</a> </div> <h3>function addHours (hours)</h3>
486 <h4>@hours {Number} Number of hours to add.</h4>
488 <p>Adds the specified <code>hours</code> to this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addHours</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">hours</span><span class="p">)</span> <span class="p">{</span>
489 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">hours</span><span class="p">))</span> <span class="p">{</span>
490 <span class="k">return</span><span class="p">;</span>
491 <span class="p">}</span>
493 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">hours</span> <span class="o">*</span> <span class="nx">msecPerHour</span><span class="p">);</span>
494 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-35"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-35">¶</a> </div> <h3>function addDays (days)</h3>
496 <h4>@days {Number} Number of days to add.</h4>
498 <p>Adds the specified <code>days</code> to this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addDays</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">days</span><span class="p">)</span> <span class="p">{</span>
499 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">days</span><span class="p">))</span> <span class="p">{</span>
500 <span class="k">return</span><span class="p">;</span>
501 <span class="p">}</span>
503 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">days</span> <span class="o">*</span> <span class="nx">msecPerDay</span><span class="p">);</span>
504 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-36"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-36">¶</a> </div> <h2>Subtraction</h2>
506 <p>Methods for subtracting <code>TimeSpan</code> instances,
507 milliseconds, seconds, hours, and days from other
508 <code>TimeSpan</code> instances.</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-37"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-37">¶</a> </div> <h3>function subtract (timeSpan)</h3>
510 <h4>@timeSpan {TimeSpan} TimeSpan to subtract from this instance.</h4>
512 <p>Subtracts the specified <code>timeSpan</code> from this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">subtract</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">timeSpan</span><span class="p">)</span> <span class="p">{</span>
513 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">timeSpan</span> <span class="k">instanceof</span> <span class="nx">TimeSpan</span><span class="p">))</span> <span class="p">{</span>
514 <span class="k">return</span><span class="p">;</span>
515 <span class="p">}</span>
517 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">-=</span> <span class="nx">timeSpan</span><span class="p">.</span><span class="nx">totalMilliseconds</span><span class="p">();</span>
518 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-38"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-38">¶</a> </div> <h3>function subtractMilliseconds (milliseconds)</h3>
520 <h4>@milliseconds {Number} Number of milliseconds to subtract.</h4>
522 <p>Subtracts the specified <code>milliseconds</code> from this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">subtractMilliseconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">milliseconds</span><span class="p">)</span> <span class="p">{</span>
523 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">milliseconds</span><span class="p">))</span> <span class="p">{</span>
524 <span class="k">return</span><span class="p">;</span>
525 <span class="p">}</span>
527 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">-=</span> <span class="nx">milliseconds</span><span class="p">;</span>
528 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-39"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-39">¶</a> </div> <h3>function subtractSeconds (seconds)</h3>
530 <h4>@seconds {Number} Number of seconds to subtract.</h4>
532 <p>Subtracts the specified <code>seconds</code> from this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">subtractSeconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">seconds</span><span class="p">)</span> <span class="p">{</span>
533 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">seconds</span><span class="p">))</span> <span class="p">{</span>
534 <span class="k">return</span><span class="p">;</span>
535 <span class="p">}</span>
537 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">-=</span> <span class="p">(</span><span class="nx">seconds</span> <span class="o">*</span> <span class="nx">msecPerSecond</span><span class="p">);</span>
538 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-40"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-40">¶</a> </div> <h3>function subtractMinutes (minutes)</h3>
540 <h4>@minutes {Number} Number of minutes to subtract.</h4>
542 <p>Subtracts the specified <code>minutes</code> from this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">subtractMinutes</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">minutes</span><span class="p">)</span> <span class="p">{</span>
543 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">minutes</span><span class="p">))</span> <span class="p">{</span>
544 <span class="k">return</span><span class="p">;</span>
545 <span class="p">}</span>
547 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">-=</span> <span class="p">(</span><span class="nx">minutes</span> <span class="o">*</span> <span class="nx">msecPerMinute</span><span class="p">);</span>
548 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-41"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-41">¶</a> </div> <h3>function subtractHours (hours)</h3>
550 <h4>@hours {Number} Number of hours to subtract.</h4>
552 <p>Subtracts the specified <code>hours</code> from this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">subtractHours</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">hours</span><span class="p">)</span> <span class="p">{</span>
553 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">hours</span><span class="p">))</span> <span class="p">{</span>
554 <span class="k">return</span><span class="p">;</span>
555 <span class="p">}</span>
557 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">-=</span> <span class="p">(</span><span class="nx">hours</span> <span class="o">*</span> <span class="nx">msecPerHour</span><span class="p">);</span>
558 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-42"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-42">¶</a> </div> <h3>function subtractDays (days)</h3>
560 <h4>@days {Number} Number of days to subtract.</h4>
562 <p>Subtracts the specified <code>days</code> from this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">subtractDays</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">days</span><span class="p">)</span> <span class="p">{</span>
563 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isNumeric</span><span class="p">(</span><span class="nx">days</span><span class="p">))</span> <span class="p">{</span>
564 <span class="k">return</span><span class="p">;</span>
565 <span class="p">}</span>
567 <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">-=</span> <span class="p">(</span><span class="nx">days</span> <span class="o">*</span> <span class="nx">msecPerDay</span><span class="p">);</span>
568 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-43"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-43">¶</a> </div> <h2>Getters</h2>
570 <p>Methods for retrieving components of a <code>TimeSpan</code>
571 instance: milliseconds, seconds, minutes, hours, and days.</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-44"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-44">¶</a> </div> <h3>function totalMilliseconds (roundDown)</h3>
573 <h4>@roundDown {boolean} Value indicating if the value should be rounded down.</h4>
575 <p>Returns the total number of milliseconds for this instance, rounding down
576 to the nearest integer if <code>roundDown</code> is set.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">totalMilliseconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">roundDown</span><span class="p">)</span> <span class="p">{</span>
577 <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span><span class="p">;</span>
578 <span class="k">if</span> <span class="p">(</span><span class="nx">roundDown</span> <span class="o">===</span> <span class="kc">true</span><span class="p">)</span> <span class="p">{</span>
579 <span class="nx">result</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
580 <span class="p">}</span>
582 <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
583 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-45"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-45">¶</a> </div> <h3>function totalSeconds (roundDown)</h3>
585 <h4>@roundDown {boolean} Value indicating if the value should be rounded down.</h4>
587 <p>Returns the total number of seconds for this instance, rounding down
588 to the nearest integer if <code>roundDown</code> is set.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">totalSeconds</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">roundDown</span><span class="p">)</span> <span class="p">{</span>
589 <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerSecond</span><span class="p">;</span>
590 <span class="k">if</span> <span class="p">(</span><span class="nx">roundDown</span> <span class="o">===</span> <span class="kc">true</span><span class="p">)</span> <span class="p">{</span>
591 <span class="nx">result</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
592 <span class="p">}</span>
594 <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
595 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-46"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-46">¶</a> </div> <h3>function totalMinutes (roundDown)</h3>
597 <h4>@roundDown {boolean} Value indicating if the value should be rounded down.</h4>
599 <p>Returns the total number of minutes for this instance, rounding down
600 to the nearest integer if <code>roundDown</code> is set.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">totalMinutes</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">roundDown</span><span class="p">)</span> <span class="p">{</span>
601 <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerMinute</span><span class="p">;</span>
602 <span class="k">if</span> <span class="p">(</span><span class="nx">roundDown</span> <span class="o">===</span> <span class="kc">true</span><span class="p">)</span> <span class="p">{</span>
603 <span class="nx">result</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
604 <span class="p">}</span>
606 <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
607 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-47"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-47">¶</a> </div> <h3>function totalHours (roundDown)</h3>
609 <h4>@roundDown {boolean} Value indicating if the value should be rounded down.</h4>
611 <p>Returns the total number of hours for this instance, rounding down
612 to the nearest integer if <code>roundDown</code> is set.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">totalHours</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">roundDown</span><span class="p">)</span> <span class="p">{</span>
613 <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerHour</span><span class="p">;</span>
614 <span class="k">if</span> <span class="p">(</span><span class="nx">roundDown</span> <span class="o">===</span> <span class="kc">true</span><span class="p">)</span> <span class="p">{</span>
615 <span class="nx">result</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
616 <span class="p">}</span>
618 <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
619 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-48"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-48">¶</a> </div> <h3>function totalDays (roundDown)</h3>
621 <h4>@roundDown {boolean} Value indicating if the value should be rounded down.</h4>
623 <p>Returns the total number of days for this instance, rounding down
624 to the nearest integer if <code>roundDown</code> is set.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">totalDays</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">roundDown</span><span class="p">)</span> <span class="p">{</span>
625 <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerDay</span><span class="p">;</span>
626 <span class="k">if</span> <span class="p">(</span><span class="nx">roundDown</span> <span class="o">===</span> <span class="kc">true</span><span class="p">)</span> <span class="p">{</span>
627 <span class="nx">result</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">result</span><span class="p">);</span>
628 <span class="p">}</span>
630 <span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
631 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-49"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-49">¶</a> </div> <h3>@milliseconds</h3>
633 <p>Returns the length of this <code>TimeSpan</code> instance in milliseconds.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">__defineGetter__</span><span class="p">(</span><span class="s1">'milliseconds'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
634 <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">%</span> <span class="mi">1000</span><span class="p">;</span>
635 <span class="p">});</span></pre></div> </td> </tr> <tr id="section-50"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-50">¶</a> </div> <h3>@seconds</h3>
637 <p>Returns the length of this <code>TimeSpan</code> instance in seconds.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">__defineGetter__</span><span class="p">(</span><span class="s1">'seconds'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
638 <span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerSecond</span><span class="p">)</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
639 <span class="p">});</span></pre></div> </td> </tr> <tr id="section-51"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-51">¶</a> </div> <h3>@minutes</h3>
641 <p>Returns the length of this <code>TimeSpan</code> instance in minutes.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">__defineGetter__</span><span class="p">(</span><span class="s1">'minutes'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
642 <span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerMinute</span><span class="p">)</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
643 <span class="p">});</span></pre></div> </td> </tr> <tr id="section-52"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-52">¶</a> </div> <h3>@hours</h3>
645 <p>Returns the length of this <code>TimeSpan</code> instance in hours.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">__defineGetter__</span><span class="p">(</span><span class="s1">'hours'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
646 <span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerHour</span><span class="p">)</span> <span class="o">%</span> <span class="mi">24</span><span class="p">;</span>
647 <span class="p">});</span></pre></div> </td> </tr> <tr id="section-53"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-53">¶</a> </div> <h3>@days</h3>
649 <p>Returns the length of this <code>TimeSpan</code> instance in days.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">__defineGetter__</span><span class="p">(</span><span class="s1">'days'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
650 <span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">/</span> <span class="nx">msecPerDay</span><span class="p">);</span>
651 <span class="p">});</span></pre></div> </td> </tr> <tr id="section-54"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-54">¶</a> </div> <h2>Instance Helpers</h2>
653 <p>Various help methods for performing utilities
654 such as equality and serialization</p> </td> <td class="code"> <div class="highlight"><pre></pre></div> </td> </tr> <tr id="section-55"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-55">¶</a> </div> <h3>function equals (timeSpan)</h3>
656 <h4>@timeSpan {TimeSpan} TimeSpan instance to assert equal</h4>
658 <p>Returns a value indicating if the specified <code>timeSpan</code> is equal
659 in milliseconds to this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">equals</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">timeSpan</span><span class="p">)</span> <span class="p">{</span>
660 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">timeSpan</span> <span class="k">instanceof</span> <span class="nx">TimeSpan</span><span class="p">))</span> <span class="p">{</span>
661 <span class="k">return</span><span class="p">;</span>
662 <span class="p">}</span>
664 <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">msecs</span> <span class="o">===</span> <span class="nx">timeSpan</span><span class="p">.</span><span class="nx">totalMilliseconds</span><span class="p">();</span>
665 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-56"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-56">¶</a> </div> <h3>function toString ()</h3>
667 <p>Returns a string representation of this <code>TimeSpan</code>
668 instance according to current <code>format</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
669 <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">format</span><span class="p">)</span> <span class="p">{</span>
670 <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_format</span><span class="p">();</span>
671 <span class="p">};</span>
673 <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">format</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
674 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-57"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-57">¶</a> </div> <h3>@private function _format ()</h3>
676 <p>Returns the default string representation of this instance.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">TimeSpan</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">_format</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
677 <span class="k">return</span> <span class="p">[</span>
678 <span class="k">this</span><span class="p">.</span><span class="nx">days</span><span class="p">,</span>
679 <span class="k">this</span><span class="p">.</span><span class="nx">hours</span><span class="p">,</span>
680 <span class="k">this</span><span class="p">.</span><span class="nx">minutes</span><span class="p">,</span>
681 <span class="k">this</span><span class="p">.</span><span class="nx">seconds</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">milliseconds</span>
682 <span class="p">].</span><span class="nx">join</span><span class="p">(</span><span class="s1">':'</span><span class="p">)</span>
683 <span class="p">};</span></pre></div> </td> </tr> <tr id="section-58"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-58">¶</a> </div> <h3>@private function isNumeric (input)</h3>
685 <h4>@input {Number} Value to check numeric quality of.</h4>
687 <p>Returns a value indicating the numeric quality of the
688 specified <code>input</code>.</p> </td> <td class="code"> <div class="highlight"><pre><span class="kd">function</span> <span class="nx">isNumeric</span> <span class="p">(</span><span class="nx">input</span><span class="p">)</span> <span class="p">{</span>
689 <span class="k">return</span> <span class="nx">input</span> <span class="o">&&</span> <span class="o">!</span><span class="nb">isNaN</span><span class="p">(</span><span class="nb">parseFloat</span><span class="p">(</span><span class="nx">input</span><span class="p">))</span> <span class="o">&&</span> <span class="nb">isFinite</span><span class="p">(</span><span class="nx">input</span><span class="p">);</span>
690 <span class="p">};</span>
692 </pre></div> </td> </tr> </tbody> </table> </div> </body> </html>