Python中的日期时间处理详解
Python中关于时间、日期的处理库有三个:time、datetime和Calendar,其中datetime又有datetime.date、datetime.time、datetime.datetime三个类。而时间又可以分为时间戳、本地时间和UTC时间(世界标准时间)。是不是听起来有点乱?那么他们相互之间有什么区别?有什么联系?又如何转换呢? time模块 在time模块中,时间有三种表现形式: 时间戳,一般指Unix时间戳,是从1970年开始到现在的秒数。 各种时间形式的获取方式: print("time stamp:",time.time()) # 时间戳:1479193181.829338 print("local time:",time.localtime()) # struct_time类型的本地时间 time.struct_time(tm_year=2016,tm_mon=11,tm_mday=15,tm_hour=14,tm_min=59,tm_sec=41,tm_wday=1,tm_yday=320,tm_isdst=0) print("utc time:",time.gmtime()) # struct_time类型的utc时间 time.struct_time(tm_year=2016,tm_hour=6,tm_isdst=0) 这里可以看出,本地时间(北京时间)和UTC时间相差8个小时。 各种时间形式的转换: time_stamp = time.time() # 时间戳 local_time = time.localtime(time_stamp)# 时间戳转struct_time类型的本地时间 utc_time = time.gmtime(time_stamp) # 时间戳转struct_time类型的utc时间 time_stamp_1 = time.mktime(local_time) # struct_time类型的本地时间转时间戳 time_stamp_2 = calendar.timegm(utc_time)# struct_time类型的utc时间转时间戳 print(time_stamp,time_stamp_1,time_stamp_2) 各种时间形式和字符串之间的转换: print(time.ctime(time_stamp)) # 时间戳转字符串(本地时间字符串) print(time.asctime(local_time)) # struct_time类型的本地时间转字符串 print(time.asctime(utc_time)) # struct_time类型的utc时间转字符串 # struct_time类型的本地时间转字符串:自定义格式 print(time.strftime("%Y-%m-%d,%H:%M:%S,%w",local_time)) # struct_time类型的utc时间转字符串:自定义格式 print(time.strftime("%Y-%m-%d,utc_time)) struct_time = time.strptime("2016-11-15,15:32:12,2","%Y-%m-%d,%w") # 字符串转struct_time类型 datetime模块 接下来再看datetime模块。该模块中包含4个主要的类: datetime.time:时间类,只包含时、分、秒、微秒等时间信息。 这里主要说一下datetime.datetime类的用法,其他两个的用法类似,只有轻微差别: a_datetime_local = datetime.datetime.now() # 获取datetime.datetime类型的本地时间 a_datetime_utc = datetime.datetime.utcnow() # 获取datetime.datetime类型的utc时间 # datetime.datetime类型转字符串 print(a_datetime_local.strftime("%Y-%m-%d,%w")) # datetime.datetime类型转字符串 print(a_datetime_utc.strftime("%Y-%m-%d,%w")) a_datetime = datetime.datetime.strptime("2016-11-15,%w") # 字符串转 datetime.datetime格式 datetime类型和时间戳、struct_time类型的相互转换 datetime.datetime和时间戳、struct_time之间,也能够相互转换: time_stamp = a_datetime_local.timestamp() # datetime类型转时间戳 print(time_stamp) a_datetime_local = datetime.datetime.fromtimestamp(time.time()) # 时间戳转datetime.datetime类型的本地时间 a_datetime_utc = datetime.datetime.utcfromtimestamp(time.time()) # 时间戳转datetime.datetime类型的utc时间 print(a_datetime_local,a_datetime_utc) print(a_datetime_local.timetuple()) # datetime类型转struct_time类型 print(a_datetime_utc.utctimetuple()) # datetime类型转struct_time类型 本文主要讲了各种时间、日期类型的基本用法,以及他们之间相互转换的方法,以及他们和字符串之间相互转换的方法。 老规矩,文中代码已上传至github:https://github.com/xianhu/LearnPython 本站备份下载地址:http://xz.aspzz.cn:81/201611/yuanma/LearnPython(aspzz.cn).zip (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |