如何强制datetime在python中保留0微秒

时间:2018-02-16 04:42:26

标签: python python-2.7 datetime floating-point formatting

我需要一个日期时间来保留微秒,即使它们是0.这是一个例子:

from datetime import datetime
starttime = datetime(year=2018, month=2, day=15, hour=8, minute=0, second=0, microsecond=0)
print(starttime.isoformat())

我想用00.000000秒打印。但它以0秒打印。如果我放入1微秒,那么它将打印00.000001

问题在于我正在使用一个jquery调用,它需要在while位置使用float格式的iso格式。

3 个答案:

答案 0 :(得分:1)

您可以使用strftime手动格式化它:

>>> starttime = datetime(year=2018, month=2, day=15, hour=8, minute=0, second=0, microsecond=0)
>>> starttime.strftime("%Y-%m-%dT%H:%M:%S.%f")
'2018-02-15T08:00:00.000000'

Vs的:

>>> starttime.isoformat()
'2018-02-15T08:00:00'

>>> starttime = datetime(year=2018, month=2, day=15, hour=8, minute=0, second=0, microsecond=1)
>>> starttime.strftime("%Y-%m-%dT%H:%M:%S.%f")
'2018-02-15T08:00:00.000001'
>>> starttime.isoformat()
'2018-02-15T08:00:00.000001'

答案 1 :(得分:1)

(确认可在Python3.6之后运行,在2.7上将无法运行)

import geopandas as gpd import contextily as ctx world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) world = world[(world.name=="Germany")] world = world.to_crs(epsg=3857) ax = world.plot(figsize=(10, 10), color='none', linewidth=1, alpha=0.5) ax.annotate("Berlin", xy=(1491636.9565986055, 6895388.533179172)) ctx.add_basemap(ax, url=ctx.providers.Stamen.Watercolor, zoom=9) 接受一个参数:

isoformat()

可能的值:

datetime.datetime(2020, 2, 20, 0, 0, 0, 0).isoformat(timespec='microseconds')
Out[17]: '2020-02-20T00:00:00.000000'

答案 2 :(得分:0)

通过对标准字符串转换的小操作,您可以这样做:

代码:

def force_microseconds(a_datetime):
    dt_str = a_datetime.isoformat()
    if '.' not in dt_str:
        dt_str += '.000000'
    return dt_str

测试代码:

import datetime as dt

starttime = dt.datetime(year=2018, month=2, day=15, hour=8,
                        minute=0, second=0, microsecond=0)

print(force_microseconds(starttime))
print(force_microseconds(starttime + dt.timedelta(microseconds=1) ))

结果:

2018-02-15T08:00:00.000000
2018-02-15T08:00:00.000001