擅长:python、mysql、java
<p>Javascript的日期不能像您期望的那样工作。但您的python代码是正确的。</p>
<p>根据<a href="http://www.epochconverter.com/epoch/timestamp-list.php" rel="nofollow">The epoch time listing</a>,2010年1月1日的纪元时间应该是</p>
<blockquote>
<p>1262304000</p>
</blockquote>
<p>Python:(似乎正确)</p>
<pre><code>>>> (datetime(2010,1,1) - datetime(1970,1,1)).total_seconds()
1262304000.0
</code></pre>
<p>Javascript(似乎是错误的)</p>
<pre><code>> new Date(2010,1,1).getTime()
1265011200000
</code></pre>
<p>或者</p>
<pre><code>> new Date(2010,1,1).getTime()/1000
1265011200
</code></pre>
<p>这是因为Javascript日期并不像您期望的那样创建日期。首先,它在当前时区而不是UTC中创建日期。因此javascript中的“get current time”将是客户端时间,而python将返回utc时间。还要注意,JS Date中有一个bug,其中月份实际上是基于0而不是基于1的。</p>
<pre><code>> new Date(2010,1,1,0,0,0,0)
Date 2010-02-01T08:00:00.000Z
> new Date(2010,0,1,0,0,0,0)
Date 2010-01-01T08:00:00.000Z
</code></pre>
<p>Javascript可以从纪元时间创建日期:</p>
<pre><code>> new Date(1262304000000)
Date 2010-01-01T00:00:00.000Z
</code></pre>
<p>这是正确的。</p>
<p><strong>或者您可以使用下面的JS函数来获得更准确的时间</strong>请注意,月份仍然从0开始,而不是从1开始</p>
<pre><code>> Date.UTC(2010,0,1)
1262304000000
</code></pre>