代码之家  ›  专栏  ›  技术社区  ›  EMP

在Python中将日期转换为日期时间

  •  502
  • EMP  · 技术社区  · 15 年前

    是否有一种内置的方法来转换 date datetime 日期时间 日期时间 有一个 .date() 方法。

    datetime(d.year, d.month, d.day) ?

    10 回复  |  直到 6 年前
        1
  •  967
  •   avpaderno    5 年前

    你可以用 datetime.combine(date, time) ; 目前,您创建了一个 datetime.time

    from datetime import date
    from datetime import datetime
    
    dt = datetime.combine(date.today(), datetime.min.time())
    
        2
  •  161
  •   Alex Martelli    15 年前

    有几种方法,尽管我相信你提到的(和不喜欢的)方法是最具可读性的方法。

    >>> t=datetime.date.today()
    >>> datetime.datetime.fromordinal(t.toordinal())
    datetime.datetime(2009, 12, 20, 0, 0)
    >>> datetime.datetime(t.year, t.month, t.day)
    datetime.datetime(2009, 12, 20, 0, 0)
    >>> datetime.datetime(*t.timetuple()[:-4])
    datetime.datetime(2009, 12, 20, 0, 0)
    

    等等--但基本上,它们都依赖于从数据库中适当地提取信息 date datetime .

        3
  •  98
  •   Wes Winham    10 年前

    公认的答案是正确的,但我宁愿避免使用 datetime.min.time() 因为我不清楚它到底是干什么的。如果这对你来说是显而易见的,那就给你更多的权力。我也有同样的感受 timetuple 方法和对排序的依赖。

    在我看来,最具可读性、最明确的方式是在不依赖读者非常熟悉 datetime

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

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

        4
  •  53
  •   Nam G VU    6 年前

    你可以使用 date.timetuple() 方法和解包运算符 *

    args = d.timetuple()[:6]
    datetime.datetime(*args)
    
        5
  •  10
  •   kadee    9 年前

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

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

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

    但如果你真的想要一个普通的约会时间,你仍然可以:

    pd.Timestamp(d).to_datetime()
    

        6
  •  7
  •   kadee    10 年前

    将日期转换为日期时间的一种方法尚未提及:

    from datetime import date, datetime
    d = date.today()
    datetime.strptime(d.strftime('%Y%m%d'), '%Y%m%d')
    
        7
  •  4
  •   Raphael Amoedo    9 年前

    easy_date 要使其变得简单:

    import date_converter
    my_datetime = date_converter.date_to_datetime(my_date)
    
        8
  •  1
  •   Sławomir Lenart chown    4 年前

    我真的需要手动调用datetime(d.year、d.month、d.day)吗

    不,你宁愿打电话

    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)
    
        9
  •  0
  •   ont.rif    3 年前

    您可以使用该类:

    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())
    
        10
  •  -10
  •   avpaderno    12 年前

    如果你需要一些快速的东西, datetime_object.date() 为您提供datetime对象的日期。

        11
  •  -13
  •   napier    11 年前

    我是Python的新手。但这段代码对我很有用,它将我提供的指定输入转换为datetime。这是密码。如果我错了,请纠正我。

    import sys
    from datetime import datetime
    from time import mktime, strptime
    
    user_date = '02/15/1989'
    if user_date is not None:
         user_date = datetime.strptime(user_date,"%m/%d/%Y")
    else:
         user_date = datetime.now()
    print user_date