python中日期转换_python中时间的转换和使用datetime

模块

一个完整大型的python程序是由模块和包的形式组织起来的,可见模块在python中的重要性。模块是一种组织型式,它许多有关联(关系)的代码组织放到单独的独立文件中。简单的说,可以把模块理解为一个包含了许多强大功能(方法)的包。在python标准库中就包含许多模块,有很多模块内的方法都会被经常使用到。

python模块有什么用?

模块内有许多函数方法,利用这些方法可以更简单的完成许多工作。

模块可以在文件中永久保存代码。在python交互式解释器中操作输入的代码,在退出python时是不会被保存的,而模块文件中的代码是永久存在的。

从实用性方面来说,模块可以跨系统平台使用,只需要Copy代码就可以。比如说,有一个全局对像,会被许多文件使用,这时为了方便把它写入一个模块中,再被调用是最好的方法。

import 语句语法

使用import语句导入模块,import语句语法如下:

import module

关键字 模块名

例如:

import sys #导入math模块

sys.path #调用math模块中的path属性

如果要同时导入多个模块,只需要在模块名之前用逗号进行分隔:

import module1,module2,module3……

import 语句导入模块顺序

在编写代码过程中,我们可能需要多种多样的模块。需要注意的是最好把导入模块放在代码的开头。为什么呢?

解释器在执行语句是,遵循作用域原则。因为这个作用域有关系,如果在顶层导入模块,此时它的作用域是全局的;如果在函数内部导入了模块,那它的作用域只是局部的,不能被其他函数使用。如果其他函数也要用到这个模块,还需要再次导入比较麻烦。

在用import语句导入模块时最好按照这样的顺序:

python标准库模块

python第三方模块

自定义模块

导入模块的几种方法

import

import sys

sys.path

from-import 相对第一种方法来说更加简单,不用写模块名,只需要写方法名

from subprocess import Popen, PIPE

a = Popen(['ls'],stdout=PIPE)

设置别名的方式 个人不推荐这种方法,因为后期会给维护代码增加工作量

import subprocess.Popen as f

a = f(['ls'])

datetime

datetime是python处理日期和时间的标准库

获取当前日期和时间

>>> from datetime import datetime

>>> now = datetime.now() # 获取当前datetime

>>> print(now)

2017-11-09 23:56:48.390000

>>> print(type(now))

datetime 加减

对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以用+和-运算符,不过需要导入timedalta这个类

注意timedelta 中只支持 days、seconds、microseconds

>>> from datetime import datetime, timedelta

>>> now = datetime.now()

>>> print now

2017-11-10 00:04:49.656000

>>> now += timedelta(hours=10)

>>> print now

2017-11-10 10:04:49.656000

>>> now += timedelta(hours=-10)

>>> print now

2017-11-10 00:04:49.656000

获取指定日期和时间

要指定某个日期和时间,我们直接用参数构造一个datetime

>>> from datetime import datetime

>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime

>>> print(dt)

2015-04-19 12:20:00

时间转换

datetime 转换为 timestamp

在计算机中,我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。

你可以认为:

timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00

对应的北京时间是:

timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00

可见timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的,这就是为什么计算机存储的当前时间是以timestamp表示的,因为全球各地的计算机在任意时刻的timestamp都是完全相同的(假定时间已校准)。

把一个datetime类型转换为timestamp只需要简单调用timestamp()方法:

>>> from datetime import datetime

>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime

>>> dt.timestamp() # 把datetime转换为timestamp

1429417200.0

timestamp转换为datetime

要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:

>>> from datetime import datetime

>>> t = 1429417200.0

>>> print(datetime.fromtimestamp(t))

2015-04-19 12:20:00

timestamp也可以直接被转换到UTC标准时区的时间:

>>> from datetime import datetime

>>> t = 1429417200.0

>>> print(datetime.fromtimestamp(t)) # 本地时间

2015-04-19 12:20:00

>>> print(datetime.utcfromtimestamp(t)) # UTC时间

2015-04-19 04:20:00

str转换为datetime

很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

>>> from datetime import datetime

>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')

>>> print(cday)

2015-06-01 18:19:59

datetime转换为str

如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:

>>> from datetime import datetime

>>> now = datetime.now()

>>> print(now.strftime('%a, %b %d %H:%M'))

Mon, May 05 16:28

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值