Python中datetime库的用法

本文详细介绍了Python的datetime模块,包括date、datetime、time和timedelta四个类的使用方法,如创建日期、时间、时间间隔,以及相关的方法如ctime、fromtimestamp、replace、strftime等,还涉及到时间日期的格式化符号。
部署运行你感兴趣的模型镜像

datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.

datetime模块定义了5个类,分别是

1.datetime.date:表示日期的类

2.datetime.datetime:表示日期时间的类

3.datetime.time:表示时间的类

from datetime import date
from datetime import datetime
from datetime import time
from datetime import timedelta
from datetime import tzinfo

from datetime import * #不知道用啥 全部导入就可以

4.datetime.timedelta:表示时间间隔,即两个时间点的间隔

5.datetime.tzinfo:时区的相关信息

一、首先看一下datetime.date类:

date类有三个参数,datetime.date(year,month,day),返回year-month-day

方法:

1.datetime.date.ctime(),返回格式如 Sun Apr 16 00:00:00 2017

2.datetime.date.fromtimestamp(timestamp),根据给定的时间戮,返回一个date对象;datetime.date.today()作用相同

3.datetime.date.isocalendar():返回格式如(year,month,day)的元组,(2017, 15, 6)

4.datetime.date.isoformat():返回格式如YYYY-MM-DD

5.datetime.date.isoweekday():返回给定日期的星期(0-6)星期一=0,星期日=6 这里表明下python3中是从[1-7]表示的 就是本来是星期几现在显示就是星期几

6.datetime.date.replace(year,month,day):替换给定日期,但不改变原日期

7.datetime.date.strftime(format):把日期时间按照给定的format进行格式化。

8.datetime.date.timetuple():返回日期对应的time.struct_time对象

  time.struct_time(tm_year=2017, tm_mon=4, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=105, tm_isdst=-1)

9.datetime.date.weekday():返回日期的星期

python中时间日期格式化符号:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

 

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

 

二、看一下datetime的time类

time类有5个参数,datetime.time(hour,minute,second,microsecond,tzoninfo),返回08:29:30

1.datetime.time.replace()

2.datetime.time.strftime(format):按照format格式返回时间

3.datetime.time.tzname():返回时区名字

4.datetime.time.utcoffset():返回时区的时间偏移量

 

三、datetime的datetime类

datetime类有很多参数,datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]),返回年月日,时分秒

datetime.datetime.ctime()   将datetime.datetime类型转化成str类型,输出:Sun Jul 28 15:47:51 2019

datetime.datetime.now():返回当前系统时间:2019-07-28 15:42:24.765625

datetime.datetime.now().date():返回当前日期时间的日期部分:2019-07-28

datetime.datetime.now().time():返回当前日期时间的时间部分:15:42:24.750000

datetime.datetime.fromtimestamp() 

 

datetime.datetime.replace()

datetime.datetime.strftime():由日期格式转化为字符串格式

  datetime.datetime.now().strftime('%b-%d-%Y %H:%M:%S')
  'Apr-16-2017 21:01:35'

datetime.datetime.strptime():由字符串格式转化为日期格式

datetime.datetime.strptime('Apr-16-2017 21:01:35', '%b-%d-%Y %H:%M:%S')
2017-04-16 21:01:35
 四、datetime的timedelta类

datetime.datetime.timedelta用于计算两个日期之间的差值,例如:

>>> a=datetime.datetime.now()
>>> b=datetime.datetime.now()
>>> a
datetime.datetime(2017, 4, 16, 21, 21, 20, 871000)
>>> b
datetime.datetime(2017, 4, 16, 21, 21, 29, 603000)

>>> b-a
datetime.timedelta(0, 8, 732000)
>>> (b-a).seconds
8

或者

time1 = datetime.datetime(2016, 10, 20)
time2 = datetime.datetime(2015, 11, 2)

"""计算天数差值"""
print(time1-time2).days

"""计算两个日期之间相隔的秒数"""
print (time1-time2).total_seconds()
---------------------

datetime.timedelta

datetime.timedelta用来计算两个datetime.datetime或者datetime.date类型之间的时间差。

def __new__(cls, days=0, seconds=0, microseconds=0,
   milliseconds=0, minutes=0, hours=0, weeks=0):

从构造函数中来看,参数可选:days、seconds、microseconds、milliseconds、minutes、hours、weeks,且默认是0。

这个函数能很方便的解决时间之间的计算问题,比如说我们想知道300天前的今天是几号,可以这样实现:

复制代码
>>> now = datetime.datetime.now().date()
>>> now
datetime.date(2018, 11, 9)
>>> delta = datetime.timedelta(days = 300)
>>> now - delta
datetime.date(2018, 1, 13)
复制代码

datetime.timedelta()也可以多个参数,比如计算300天12小时前的时间。

复制代码
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2018, 11, 9, 15, 30, 36, 156323)
>>> delta = datetime.timedelta(days = 300,hours = 12)
>>> now - delta
datetime.datetime(2018, 1, 13, 3, 30, 36, 156323)
复制代码

计算总天数和秒数。

>>> datetime.timedelta(days=1,hours = 2).days
1
>>> datetime.timedelta(days=1,hours = 2).total_seconds()
93600.0

 

转载于:https://www.cnblogs.com/huigebj/p/11259449.html

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think> 我们正在讨论Pythondatetime使用方法。根据用户需求,我们将提供清晰、结构化的指南。 参考之前的引用[1],它提供了概述,但我们将更详细地展开。 注意:用户要求的是使用指南,所以我们应该覆盖主要功能和常见操作。 计划结构: 1. 引入:简要介绍datetime模块及其重要性。 2. 核心类:介绍datetime模块中的主要类(date, time, datetime, timedelta, tzinfo等)。 3. 常见操作:创建对象、格式化、解析字符串、时间运算等。 4. 时区处理:介绍时区的相关操作(使用pytz或Python3.9+的时区支持)。 5. 实际示例:给出一些常见场景的代码示例。 6. 注意事项:指出一些常见陷阱和最佳实践。 注意:按照指令,数学公式用$...$,但这里可能用不到太多数学公式,但如果有时间计算(例如时间差计算)可以用到。 另外,独立公式用$$...$$,但同样在datetime中可能较少涉及。 我们将生成相关问题放在最后。 </think> ### Python `datetime` 使用指南 `datetime` 模块是 Python 处理日期和时间的核心工具,提供多种类和方法用于高效操作时间数据[^1]。以下为核心功能详解: --- #### 一、核心类及用法 ```python from datetime import datetime, date, time, timedelta, timezone # 1. 当前时间 now = datetime.now() # 2023-08-04 15:30:45.123456 # 2. 创建特定时间 dt = datetime(2023, 8, 4, 10, 30) # 年月日时分 # 3. 单独日期和时间 today = date.today() # 2023-08-04 t = time(14, 30) # 14:30:00 ``` --- #### 二、时间格式化与解析 ```python # 1. 时间 → 字符串 (strftime) formatted = now.strftime("%Y-%m-%d %H:%M:%S") # "2023-08-04 15:30:45" # 2. 字符串 → 时间 (strptime) parsed = datetime.strptime("2023-08-04", "%Y-%m-%d") # 2023-08-04 00:00:00 ``` **常用格式符号**: - `%Y`:四位年份(2023) - `%m`:两位月份(01-12) - `%d`:两位日期(01-31) - `%H`:24小时制小时(00-23) - `%M`:分钟(00-59) --- #### 三、时间计算 ```python # 1. 时间加减 (timedelta) tomorrow = now + timedelta(days=1) # 增加1天 last_week = now - timedelta(weeks=1) # 减少1周 # 2. 时间差计算 diff = datetime(2023, 8, 5) - datetime(2023, 8, 1) print(diff.days) # 输出: 4 (天数差) ``` --- #### 四、时区处理(Python 3.9+) ```python # 1. 创建带时区的时间 tz_beijing = timezone(timedelta(hours=8)) dt_tz = datetime(2023, 8, 4, 10, tzinfo=tz_beijing) # 2. 时区转换 from zoneinfo import ZoneInfo dt_utc = dt_tz.astimezone(ZoneInfo("UTC")) # 转为UTC时间 ``` --- #### 五、实际应用场景 1. **日志时间戳** ```python log_time = datetime.now().strftime("[%Y-%m-%d %H:%M:%S]") print(f"{log_time} User logged in") ``` 2. **定时任务检查** ```python deadline = datetime(2023, 8, 10) if datetime.now() > deadline: print("任务超时!") ``` 3. **耗时计算** ```python start = datetime.now() # 执行代码... elapsed = datetime.now() - start print(f"耗时: {elapsed.total_seconds():.2f}秒") ``` --- #### 注意事项 1. 处理历史日期时注意日历变更(如1582年格里高利历改革) 2. 跨时区转换推荐使用 `pytz` (兼容旧版本Python) 3. 夏令时区域使用 `is_dst` 参数避免歧义
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值