【问题标题】:How to get current time in python and break up into year, month, day, hour, minute?如何在python中获取当前时间并分解为年、月、日、小时、分钟?
【发布时间】:2015-07-16 07:17:06
【问题描述】:

我想在 Python 中获取当前时间并将它们分配给变量,例如 yearmonthdayhourminute。在 Python 2.7 中如何做到这一点?

【问题讨论】:

标签: python python-2.7 datetime time


【解决方案1】:

datetime 模块是你的朋友:

import datetime
now = datetime.datetime.now()
print(now.year, now.month, now.day, now.hour, now.minute, now.second)
# 2015 5 6 8 53 40

你不需要单独的变量,返回的datetime 对象的属性有你需要的一切。

【讨论】:

  • 只是一个补充:import time \n now=time.localtime() \n print now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_hour, now.tm_min, now.tm_sec, now.tm_wday, now.tm_yday, now.tm_isdst
【解决方案2】:

这是一个最大 80 字符行以下的单行代码。

import time
year, month, day, hour, min = map(int, time.strftime("%Y %m %d %H %M").split())

【讨论】:

    【解决方案3】:

    tzamandatetime 答案更简洁,但您可以使用原始 python time 模块来完成:

    import time
    strings = time.strftime("%Y,%m,%d,%H,%M,%S")
    t = strings.split(',')
    numbers = [ int(x) for x in t ]
    print numbers
    

    输出:

    [2016, 3, 11, 8, 29, 47]
    

    【讨论】:

      【解决方案4】:

      通过解压日期时间对象的timetuple,你应该得到你想要的:

      from datetime import datetime
      
      n = datetime.now()
      t = n.timetuple()
      y, m, d, h, min, sec, wd, yd, i = t
      

      【讨论】:

      • 注意:您正在隐藏内置函数“min”
      【解决方案5】:

      让我们看看如何在python中从当前时间获取和打印日、月、年:

      import datetime
      
      now = datetime.datetime.now()
      year = '{:02d}'.format(now.year)
      month = '{:02d}'.format(now.month)
      day = '{:02d}'.format(now.day)
      hour = '{:02d}'.format(now.hour)
      minute = '{:02d}'.format(now.minute)
      day_month_year = '{}-{}-{}'.format(year, month, day)
      
      print('day_month_year: ' + day_month_year)
      

      结果:

      day_month_year: 2019-03-26
      

      【讨论】:

        【解决方案6】:

        对于 python 3

        import datetime
        now = datetime.datetime.now()
        print(now.year, now.month, now.day, now.hour, now.minute, now.second)
        

        【讨论】:

          【解决方案7】:
          import time
          year = time.strftime("%Y") # or "%y"
          

          【讨论】:

            【解决方案8】:

            你可以使用gmtime

            from time import gmtime
            
            detailed_time = gmtime() 
            #returns a struct_time object for current time
            
            year = detailed_time.tm_year
            month = detailed_time.tm_mon
            day = detailed_time.tm_mday
            hour = detailed_time.tm_hour
            minute = detailed_time.tm_min
            

            注意:可以将时间戳传递给 gmtime,默认为当前时间 由时间()返回

            eg.
            gmtime(1521174681)
            

            struct_time

            【讨论】:

              【解决方案9】:

              三个用于访问和操作日期和时间的库,即 datetime、arrow 和 pendulum,都使这些项目在 namedtuples 中可用,其元素可通过名称或索引访问。此外,这些项目可以以完全相同的方式访问。 (我想如果我更聪明,我不会感到惊讶。)

              >>> YEARS, MONTHS, DAYS, HOURS, MINUTES = range(5)
              >>> import datetime
              >>> import arrow
              >>> import pendulum
              >>> [datetime.datetime.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]]
              [2017, 6, 16, 19, 15]
              >>> [arrow.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]]
              [2017, 6, 16, 19, 15]
              >>> [pendulum.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]]
              [2017, 6, 16, 19, 16]
              

              【讨论】:

                【解决方案10】:

                这是一个较老的问题,但我想出了一个我认为其他人可能会喜欢的解决方案。

                def get_current_datetime_as_dict():
                n = datetime.now()
                t = n.timetuple()
                field_names = ["year",
                               "month",
                               "day",
                               "hour",
                               "min",
                               "sec",
                               "weekday",
                               "md",
                               "yd"]
                return dict(zip(field_names, t))
                

                timetuple() 可以与另一个数组一起压缩,从而创建带标签的元组。将其转换为字典,生成的产品可以与 get_current_datetime_as_dict()['year'] 一起使用。

                这比这里的一些其他解决方案的开销要多一些,但我发现能够在代码中为了清晰起见访问命名值真是太好了。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2020-05-20
                  • 1970-01-01
                  • 2011-05-23
                  • 2011-02-08
                  • 2012-05-25
                  • 2021-06-06
                  • 2021-08-14
                  • 2010-11-17
                  相关资源
                  最近更新 更多