Python中是否有将日期转换为日期时间的内置方法,例如获取给定日期的午夜日期时间?相反的转换很容易:datetime有一个.date()方法。

我真的需要手动调用datetime(d。年,月,日)?


当前回答

公认的答案是正确的,但我更倾向于避免使用datetime.min.time(),因为它的确切功能对我来说并不明显。如果这对你来说很明显,那你就更有力量。我对timetuple方法和对排序的依赖也有同样的感觉。

在我看来,在不依赖读者非常熟悉datetime模块API的情况下,最易读的、显式的方法是:

from datetime import date, datetime
today = date.today()
today_with_time = datetime(
    year=today.year, 
    month=today.month,
    day=today.day,
)

这就是我对“显性比隐性好”的看法。

其他回答

你可以使用date.timetuple()方法和解包操作符*。

args = d.timetuple()[:6]
datetime.datetime(*args)

今天是2016年,我认为熊猫提供了最干净的解决方案。

from datetime import date
import pandas as pd
d = date.today()
pd.Timestamp(d)

时间戳是熊猫版的datetime,在大多数情况下可以与它互换。检查:

from datetime import datetime
isinstance(pd.Timestamp(d), datetime)

但如果你真的想要一个香草日期时间,你仍然可以这样做:

pd.Timestamp(d).to_datetime()

在处理时区时,时间戳比datetimes强大得多。实际上,时间戳是如此强大,以至于遗憾的是它们的文档记录如此之少……

你可以使用这个类:

import time 

import datetime

class TimingClass():

    def __init__(self):

        self.YEAR        = datetime.date.today().year
        self.MONTH       = datetime.date.today().month
        self.DATE        = datetime.date.today().day
        self.HOUR        = datetime.datetime.now().hour
        self.MINUTE      = datetime.datetime.now().minute
        self.SECONDS     = datetime.datetime.now().second
        
        self.TODAY       = datetime.date.today()
        self.YESTERDAY   = datetime.datetime.strftime( (self.TODAY - datetime.timedelta(days = 1)) , '%Y-%m-%d')
        self.TOMORROW   = datetime.datetime.strftime( (self.TODAY + datetime.timedelta(days = 1)) , '%Y-%m-%d')
        
        self.TODAY_datetime = datetime.datetime.combine(datetime.date.today(), datetime.datetime.min.time())

我真的需要手动调用datetime(d。年,月,日)

不,你更想打电话

date_to_datetime(dt)

你可以在项目中的一些utils/time.py中实现一次:

from typing import Optional
from datetime import date, datetime

def date_to_datetime(
    dt: date,
    hour: Optional[int] = 0,
    minute: Optional[int] = 0, 
    second: Optional[int] = 0) -> datetime:

    return datetime(dt.year, dt.month, dt.day, hour, minute, second)

如果你需要一些快速的东西,datetime_object.date()会给你一个datetime对象的日期。