时间类型变换问题,这一篇就够了!

在介绍本文主题之前,我们思考片刻,是否有很多代码我们已经重新写了不止一次,不经常使用的函数可能还需要多次查询。

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python编程。之所以要提及面向对象的概念,是因为我们可以对常用的代码进行封装,避免重复开发。

今天就来给大家分享一下常用的时间转换函数,按照如下三个步骤介绍:

  • 处理时间的库
  • 时间类型对象
  • 时间类型转换方法

处理时间的库

Python标准库中有两个处理时间的库。其中一个名为datetime,另一个是time。在Python官网文档中,datetime 是被定义为数据类型(Data Types)。由此可见,datetime 是主要提供处理日期和时间的数据类型的模块。它其中有几个常用的类型,例如:datetime.datetime、datetime.time、datetime.date等,其中最主要的类是datetime.datetime。因为它携带了 datetime.time 和 datetime.date 这两个所带的信息,能够比较齐全地输出,即能一次性就输出年、月、日、时、分、秒等日期和时间信息。

time模块是归属于通用操作系统服务(Generic Operating System Services)类目中。time模块主要提供各种时间转换的函数。它服务于系统层次,Python 又是跨平台的,所以有些 API 只能在某些操作系统上使用。

时间类型对象

在Python中,涉及时间对象有4种:datetime、timestamp、time tuple、string。

1.datetime

datetime对象属于datetime 模块。它的构造方式是 datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)。我们了解下它的构造方法即可,一般很少直接使用它的构造方法。我们一般使用它的 now() 函数来获取本地当前日期和时间。

2.string

在某些场景,我们可能需要使用到字符串类型的时间。我们在now()函数的基础上再调用 strftime()函数即可。strftime() 返回的是一个表示日期和时间的字符串。最后显示结果由指定样式的参数决定。

3.timestamp

timestamp指的是Unix时间戳。它是格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北京时间 1970 年01月01日08 时00 分00 秒)起至现在的总秒数。我们使用time对象中的 time()函数能获取到时间戳 。

4.time tuple

time tuple 表示时间元组。time tuple 是 time.struct_time 对象类型。获取本地当前时间,一般是使用 time 中的 localtime() 函数。localtime() 返回的是将时间戳经过格式化的本地时间。

时间类型转换方法

给大家介绍的方法,是我已封装好的类函数dateprocess,它包含了常用的各种时间转换方法,在工作中可以直接调用即可,无需重复开发,使用起来简单方便,有兴趣可以收藏。

import time
import datetime
class dateprocess:
    # datetime 转 string
    def datetime2str(self,input_datetime):
        input_str = input_datetime.strftime('%Y-%m-%d %H:%M:%S')
        return input_str 
    # string 转 datetime
    def str2datetime(self,input_str):
        input_dt = datetime.datetime.strptime(input_str,'%Y-%m-%d %H:%M:%S')
        return input_dt
    # string 转 timestamp
    def str2timestamp(self,input_str):
        timeArray  = time.strptime(input_str, "%Y-%m-%d %H:%M:%S")
        timestamp = int(time.mktime(timeArray))
        return timestamp
    # timestamp 转 string
    def timestamp2str(self,input_str):
        input_dt = datetime.datetime.fromtimestamp(input_str)
        return input_dt
    # datetime 转 time_tuple
    def datetime2time_tuple(self,dt):
        input_dt = dt.timetuple()
        return input_dt
   # str 转 time_tuple
    def str2time_tuple(self,data_str):
        input_str = time.strptime(data_str,'%Y-%m-%d %H:%M:%S')
        return input_str 
   # timestap 转 time_tuple
    def timestamp2time_tuple(self,data_timestamp):
        input_str = time.localtime(data_timestamp)
        return input_str 
   # time_tuple 转 timestamp
    def time_tuple2timestamp(self,time_tuple):
        input_str = int(time.mktime(time_tuple))
        return input_str 
    # 比如昨天同一时刻
    def days_difference(self,n):
        now_dt = datetime.datetime.now() - datetime.timedelta(days=n)
        return now_dt
    # 比如一个小时之前
    def hours_difference(self,n):
        now_dt = datetime.datetime.now() - datetime.timedelta(hours=n)
        return now_dt
  
data = dateprocess()
now = datetime.datetime.now()
data_str = data.datetime2str(now)
print('-----------data_str--------------')
print(data_str)

技术交流

欢迎转载、收藏本文,码字不易,有所收获点赞支持一下!

为方便进行学习交流,本号开通了技术交流群,添加方式如下:

直接添加小助手微信号:pythoner666,备注:CSDN+python,或者按照如下方式添加均可!
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值