擅长:python、mysql、java
<p>只有在<code>datetime.timedelta</code>对象的<code>microseconds</code>属性中存在非零值时,才会打印微秒。在</p>
<p>如果你想要一个不同的行为,写你自己的字符串格式化函数。比如:</p>
<pre><code>def delta_to_string(tdelta):
return '%s days, %02d:%02d:%09.6f' % (
tdelta.days,
tdelta.seconds / 3600,
(tdelta.seconds / 60) % 60,
(tdelta.seconds % 60) + (tdelta.microseconds / 10**6.))
</code></pre>
<p><code>%09.6f</code>格式表示浮点数(包括十进制数)总计9位数,必要时加前导0,小数部分最多6位数。如果您想要更多或更少的位数,您必须同时更改总位数和小数部分-小数点后10位为<code>%013.10f</code>。在</p>
<p>这将打印<code>timedelta</code>对象的每个部分。让我们试试:</p>
^{pr2}$
<p>我想你想保留不打印天数的功能,如果天数是0。。。在</p>
<pre><code>def delta_to_string(tdelta):
return '%s%02d:%02d:%09.6f' % (
('%s days, ' % tdelta.days) if tdelta.days else '',
tdelta.seconds / 3600,
(tdelta.seconds / 60) % 60,
(tdelta.seconds % 60) + (tdelta.microseconds / 10**6.))
</code></pre>
<p>现在的结果是:</p>
^{4}$
<p>与内置的<strong>str</strong>函数的行为方式不同。。。我将把这些差异留给“读者练习”</p>