Python 日期和时间 —— datetime

Python 日期和时间 —— datetime

  Python提供了多个内置模块用于操作日期时间,如calendar,time,datetime。time提供的接口与C标准库time.h基本一致。其中应用最广的是datetime,相比于time模块,datetime模块的接口则更直观、更容易调用。

  datetime 模块为日期和时间处理同时提供了简单和复杂的方法。支持日期和时间算法的同时,实现的重点在于更有效的处理和格式化输出。该模块还支持时区处理。本文对 datetime库进行学习。

  datetime 库

  

    可见包含四大类,date表示日期(年月日);datetime(年月日时分秒...)继承 date;time表示时间(时分秒...);timedelta 表示时间差;tzinfo 表示时区信息(本章暂不做介绍)。

  datetime.date

    date 即日期,类的构成为 (年, 月,日),对应的 year、month、day 均为date类的属性(type 为 int)。

year的范围是[MINYEAR, MAXYEAR],即[1, 9999];
month的范围是[1, 12]。(月份是从1开始的,不是从0开始的);
day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天,非闰年28天; 若超范围,会报错 

    today() 返回当日;weekday() 返回当前星期数,若星期一,返回0、若星期2,返回1,以此类推;isoweekday()  若星期一,返回1、若星期2,返回2,以此类推;

    isoformat() 返回日期以ISO格式,即 ‘YYYY-MM-DD’的字符串;strftime(...) 方法可自定义日期表示法(time和datetime也均可使用),该方法会在博文之后详细说明。

    date.replace(year/month/day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)

    一些其他的方法请参考文档,上述方法示例代码如下:

    

  datetime.time

time 即时间,类的构成为 (时, 分, 秒, 微秒, 时区 信息),微妙、时区信息可缺省。

     time类提供的实例方法和属性:time.hour、time.minute、time.second、time.microsecond:时、分、秒、微秒; time.tzinfo:时区信息(暂不介绍);

     其中 time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);time.resolution:时间的最小单位,这里是1微秒;

     isoformat() 返回时间以ISO格式,即 "HH:MM:SS" 的字符串;strftime(...) 方法也可自定义时间表示法,该方法会在博文之后详细说明。

     time.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):生成一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);

     一些其他的方法请参考文档,上述方法示例代码 如下:

    

  datetime.datetime

    datetime是date与time的结合体,包括date与time的所有信息(常用的时间处理就用datetime)。

    它的构造函数如下:datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ),各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

    datetime类定义的类属性与方法:

      datetime.today():返回一个表示当前本地时间的datetime对象;
      datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
      datetime.utcnow():返回一个当前utc时间的datetime对象;
      datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
      datetime.date():获取date对象; datetime.time():获取time对象;
      datetime. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]) : 用法同date和time方法;
      datetime.combine(date, time):根据date和time,创建一个datetime对象;
      datetime.strptime(date_string, format):将格式字符串转换为datetime对象;同样该方法会在博文之后详细说明。

time 模块本文不介绍,但需要了解一个比较重要的概念,即时间戳

  time() -> floating point number
 
  Return the current time in seconds since the Epoch.
  Fractions of a second may be present if the system clock provides them.

Unix time, POSIX time 或 Unix timestamp 是从Epoch(1970年1月1日00:00:00 UTC)开始所经过的秒数,不考虑闰秒。相关的详细了解请 Google。

import time
timestamp = time.time()
print timestamp

    上述 datetime 的方法示例如下:

    

  timedelta

    即表示一个时间的差值: 

具体参考文档,这边就不多加阐述了:

timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

All arguments are optional and default to 0. Arguments may be ints, longs, or floats, and may be positive or negative.

Only days, seconds and microseconds are stored internally. Arguments are converted to those units:

  • A millisecond is converted to 1000 microseconds.
  • A minute is converted to 60 seconds.
  • An hour is converted to 3600 seconds.
  • A week is converted to 7 days.

and days, seconds and microseconds are then normalized so that the representation is unique, with

  • 0 <= microseconds < 1000000
  • 0 <= seconds < 3600*24 (the number of seconds in one day)
  • -999999999 <= days <= 999999999

    主要是对date、time、datetime 一些 timedelta 操作的支持,如下:

      date 对某些操作进行了重载,它允许我们对日期进行如下一些操作:
        date2 = date1 + timedelta  # 日期加上一个间隔,返回一个新的日期对象(timedelta将在下面介绍,表示时间间隔)
        date2 = date1 - timedelta   # 日期隔去间隔,返回一个新的日期对象
        timedelta = date1 - date2   # 两个日期相减,返回一个时间间隔对象
        date1 < date2         # 两个日期可进行比较

      注: 对日期进行操作时,要防止日期超出它所能表示的范围。

      time 和 datetime 的操作与 date 雷同,这里就不提供例子了。

    

  时间的格式化

    datetime、date、time 都提供了strftime()方法,该方法接收一个格式字符串,输出日期时间的字符串表示。

参考示例如下:

  

时间: 2024-10-23 08:32:15

Python 日期和时间 —— datetime的相关文章

Python 日期和时间(转)

Python 日期和时间 Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个 time 和 calendar 模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式.如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当

Python 日期和时间day12

Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个time and calendar模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python附带的受欢迎的time模块下有很多函数可以转换常见日期格式.如函数time.time()用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操作系统时间, 如下实例

python 日期、时间、字符串相互转换

python 日期.时间.字符串相互转换 在python中,日期类型date和日期时间类型dateTime是不能比较的. (1)如果要比较,可以将dateTime转换为date,date不能直接转换为dateTime import datetime dateTime_p = datetime.datetime.now() date_p = dateTime_p.date() print(dateTime_p) #2019-01-30 15:17:46.573139 print(date_p) #

14、python 日期和时间

Python  日期和时间 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python 的 time 模块下有很多函数可以转换常见日期格式.如函数time.time()用于获取当前时间戳, 如下实例: #!/usr/bin/python # -*- coding: UTF

Python日期和时间

日期和时间主要有两个库,datetime和time. datetime: 日期:datetime.date.today() 日期和时间:datetime.datetime.now() 1000天之后:datetime.datetimedelta(days=1000) 打印格式的问题:isoformat(),strftime() 字符串转换:strptime() time: datetime.time(12,11,30) time.time() 实际时间 time.clock() CPU时间 ti

【转】Python 日期和时间

本文转自:http://www.runoob.com/python/python-date-time.html Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python 的 time 模块下有很多函数可以转换常见日期格式.如函数time.time()用于获取当前时间戳,

4 Python 日期和时间

Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. Python 的 time 模块下有很多函数可以转换常见日期格式.如函数time.time()用于获取当前时间戳 1 import time; # 引入time模块 2 3 ticks = time.time() 4 prin

Python日期与时间

Python日期操作: >>> import time >>> print time.localtime() #strcy_time元组 time.struct_time(tm_year=2017, tm_mon=12, tm_mday=30, tm_hour=15, tm_min=26, tm_sec=47, tm_wday=5, tm_yday=364, tm_isdst=0) >>> print time.strftime("%Y-%m

Python 日期和时间

time.time()获取当前时间戳 例如: #!/usr/bin/python # -*- coding: UTF-8 -*- import time; # 引入time模块 ticks = time.time() print "当前时间戳为:", ticks 结果: 当前时间戳为: 1491750320.74 时间元组 比如获取当前时间: #!/usr/bin/python # -*- coding: UTF-8 -*- import time localtime = time.l