当前位置: 首页 > news >正文

Python数据类型:date、datetime、calendar、enum

一、时间元组

时间元组将时间拆分成各个部分。

下标属性描述
0tm_year2008
1tm_mon1 到 12
2tm_mday1 到 31
3tm_hour0 到 23
4tm_min0 到 59
5tm_sec0 到 61 (60或61 是闰秒)
6tm_wday0到6 (0是周一)
7tm_yday一年中的第几天,1 到 366
8tm_isdst是否为夏令时,值有:1(夏令时)、0(不是夏令时)、-1(未知),默认 -1

二、datetime

datetime模块将时间日期细分了:

  • date 日期(年月日)
  • time 时间(时分秒)
  • datetime(date + time)
  • timezone(时区)
  • timedelta(时间间隔)
函数描述示例
datetime.datetime.now()当前时间datetime.datetime(2019, 12, 9, 11, 58, 3, 823844)
datetime.datetime.now().date()获取当前日期datetime.date(2019, 12, 9)
datetime.date.today() + datetime.timedelta(days=1)明天datetime.date(2019, 12, 10)
datetime.datetime.now() - datetime.timedelta(days=3)3天前datetime.datetime(2019, 12, 6, 12, 5, 9, 95893)
datetime.datetime.combine(datetime.date.today(), datetime.time.min)日期和时间组合(当天开始时间)datetime.datetime(2019, 12, 9, 0, 0)
datetime.datetime.combine(datetime.date.today(), datetime.time.max)日期和时间组合(当天结束时间)datetime.datetime(2019, 12, 9, 23, 59, 59, 999999)
(datetime.datetime(2019, 12, 9, 0, 0, 0) - datetime.datetime.now()).total_seconds()获取两个日期的差的秒数43854.034031

日期格式化:datetime和str转换

  • %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 当前时区的名称
  • %% %号本身
# 日期转字符串 2022-10-20 15:50:22datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")# 字符串转日期 <class 'datetime.datetime'>datetime.datetime.strptime("2014-12-31 18:20:10","%Y-%m-%d %H:%M:%S")

日期datetime和时间戳timestamp转换

timestamp=datetime.datetime.now().timestamp()# 2022-10-20 15:43:56.071982now=datetime.datetime.fromtimestamp(timestamp)

本周最后一天

datetime.date.today()+datetime.timedelta(6-today.weekday())

本月最后一天

>>>importcalendar>>>today=datetime.date.today()>>>_,last_day_num=calendar.monthrange(today.year,today.month)>>>last_day=datetime.date(today.year,today.month,last_day_num)>>>last_day datetime.date(2015,1,31)

获取上个月的最后一天(可能跨年)

>>>importdatetime>>>today=datetime.date.today()>>>first=datetime.date(day=1,month=today.month,year=today.year)>>>lastMonth=first-datetime.timedelta(days=1)

获取当前时间元组

# datetime 转元组 struct_time# time.struct_time(tm_year=2022, tm_mon=10, tm_mday=20, tm_hour=15, tm_min=19, tm_sec=20, tm_wday=3, tm_yday=293, tm_isdst=-1)datetime.datetime.now().timetuple()

获取当天日期

# 2022-10-20datetime.datetime.now().date()# 2022-10-20today=datetime.date.today()# 2022-10-19yesterday=today-datetime.timedelta(days=1)# 上个月份 9last_month=today.month-1iftoday.month-1else12

获取当天日期的开始时间

# 2022-10-20today=datetime.date.today()# 2022-10-20 00:00:00datetime.datetime.combine(today,datetime.time())# 2022-10-20 00:00:00datetime.datetime.combine(today,datetime.time.min)# 2022-10-20 23:59:59.999999datetime.datetime.combine(today,datetime.time.max)

三、枚举 enum

Enum有3个属性:name(枚举名如:monday)、value(枚举值如:1)、label(枚举描述如:星期一)

fromenumimportEnum,unique# 枚举中的key不能相同,value可以相同,如果希望value不相同可以使用@unique来限制# IntEnum 表示value值只能是整型数字或者整型字符串@uniqueclassWeekday(Enum):monday=1tuesday=2wednesday=3thursday=4friday=5saturday=6sunday=7# 为枚举项添加其他属性,可以为同一个枚举项添加多个属性Weekday.monday.label='星期一'Weekday.tuesday.label='星期二'Weekday.wednesday.label='星期三'Weekday.thursday.label='星期四'Weekday.friday.label='星期五'Weekday.saturday.label='星期六'Weekday.sunday.label='星期日'# 枚举可以使用==或者is关键字进行比较monday=Weekday['monday']monday2=Weekday(1)# <enum 'Weekday'> monday 1 星期一 True Trueprint(type(Weekday.monday),Weekday.monday.name,Weekday.monday.value,Weekday.monday.label,monday==monday2,mondayismonday2)
http://www.jsqmd.com/news/810945/

相关文章:

  • Windows 10/11下Tetgen从编译到可视化:VS2022编译、命令行使用与TetView结果查看全流程
  • TrollInstallerX终极指南:如何高效部署iOS越狱工具的专业解决方案
  • DeepSeekMath 7B终极指南:开源数学推理AI的架构解析与实战应用
  • 三步解锁WeMod Pro高级功能:Wand-Enhancer终极免费指南
  • 饮料五码合一扫码营销系统解决方案如何引爆终端动销? - 易全一物一码提供商
  • AI赋能二进制安全分析:BinAIVulHunter实战指南
  • AndroidOfferKiller深度解析:JVM运行时数据区域面试重点
  • 2026年高新技术企业政策变化以及应对技巧
  • Aether-Kit:WSL2开发环境一键配置与模块化实践
  • 终极代码查重指南:JPlag如何3分钟检测代码抄袭
  • 基于网络爬虫的旅游景点数据可视化集成平台
  • 基于WXT与React构建ChatGPT对话导航扩展:ChatGPS开发全解析
  • 2026年4月广州靠谱的挡烟垂壁配件批发推荐,防火卷帘门/耐高温挡烟垂壁/固定式挡烟垂壁/挡烟垂壁,挡烟垂壁品牌推荐 - 品牌推荐师
  • rust-rdkafka社区生态与最佳实践:知名项目使用案例分享
  • 零依赖高性能STL到STEP转换引擎:基于边界表示算法的企业级CAD数据交换解决方案
  • 如何快速清理重复图片:AntiDupl.NET智能去重工具的完整指南
  • 为什么你的ChatGPT创意总卡在播放量500?:揭秘TikTok推荐系统对AI内容的5层语义识别机制
  • Naftis Helm Chart部署详解:生产环境下的最佳配置
  • 终极数据可视化分析指南:10个自助BI与交互式查询平台推荐
  • 基于OpenClaw与Binance API的加密货币安全助手:四层架构与实战部署
  • STM32项目实战:为你的智能家居终端打造一个简易GUI(基于TFTLCD与FSMC)
  • 校赛电路复杂成这样了!还有必要比赛科目1,2码?
  • 5分钟终极指南:免费获取Axure RP中文语言包的完整安装教程
  • 终极指南:如何在Windows电脑上直接安装安卓APK文件?
  • 前端静态资源接入 CDN 后如何配置缓存过期时间?
  • SpringBoot + Disruptor 实现特快高并发处理,支撑每秒 600 万
  • 探索APK Installer:如何用Windows原生技术解析安装安卓应用?
  • 终极解决方案:一键将LaTeX PDF幻灯片转换为PowerPoint格式
  • 乌鲁木齐医疗器械公司注册服务流程攻略:从申请到开业的详细步骤 - GrowthUME
  • 2026测定粘结指数标准无烟煤行业标杆名录:宁夏石丰元科技领衔 - 深度智识库