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

获取当前日期和时间

注意到\(\color{purple}{datetime}\)是模块,\(\color{purple}{datetime}\)模块还包括了一个\(\color{purple}{datetime}\)类,通过from  datetime  import  datetime导入的才是\(\color{purple}{datetime}\)这个类

\(\color{purple}{datetime.now}\)返回当前日期和时间,其类型为\(\color{purple}{datetime}\)

获取指定日期和时间

要指定某个日期和时间,直接用参数构造一个\(\color{purple}{datetime}\):

datetime转换成timestamp(时间戳)

计算机中,时间实际上使用数字表示的。我们将1970年1月1日00:00:00 UTC+00:00时区的时刻称为epoch time,记为\(\color{purple}{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都是完全相同的(假定时间已校准)。

把一个\(\color{purple}{datetime}\)类型转换成timestamp只需要简单调用\(\color{purple}{timestamp}\)方法:

注意Python的timestamp是一个浮点数。如果有小数位,小数位表示毫秒数。

timestamp转换为datetime

要把timestamp转换为\(\color{purple}{timestamp}\),使用\(\color{purple}{timestamp}\)提供的\(\color{purple}{fromtimestamp()}\)方法:

发现timestamp是一个浮点数,它没有时区的概念,而datetime是有时区的。上述转换在timestamp和本地时间的转换
本地时间是当前操作系统设定的时区,例如北京时区是东八区,则本地时间:
```
2020-04-15 12:20:00
```
实际上就是UTC+8:00时区的时间:
```
2020-04-15 12:20:00 UTC+8:00
```
而此刻的格林威治标准时间与北京时间差8小时,也就是UTC+0:00时区的时间应该是:
```
2020-04-15 4:20:00 UTC+8:00
```
timestamp也可以直接转换成UTC标准时区的时间

str转换为datetime

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

字符串\(\color{purple}{'%Y-%m-%d %H:%M:%S'}\)规定了日期和时间部分的格式

注意转换后的datetime是没有时区信息的。

datetime转换为str

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

datetime加减

对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用\(\color{purple}{+}\)和\(\color{purple}{-}\)运算符,不过需要导入\(\color{purple}{timedelta}\)这个类:

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
>>> now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
>>> now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
>>> now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)

可见,使用timedelta可以容易算出前几天和后几天的时刻

关于"本地时间转换成UTC时间","时区转换(utcnow)"可具体查看参考链接

参考:廖雪峰python

datetime模块中及strptime与strftime的区别和使用方法的更多相关文章

  1. python中datetime模块中datetime对象的使用方法

    本文只讲述datetime模块中datetime对象的一些常用的方法,如果读者需要更多datetime模块的信息,请查阅此文档. datetime模块的对象有如下: timedelta date da ...

  2. python—— 文件的打开模式和文件对象方法 & os、os.path 模块中关于文件、目录常用的函数使用方法

    引用自“鱼c工作室”     文件的打开模式和文件对象方法  : https://fishc.com.cn/forum.php?mod=viewthread&tid=45279&ext ...

  3. express模块中的req,res参数的常用属性方法

    express模块中的req,res参数的常用属性方法 const express = require('express'); const router = express.Router() rout ...

  4. os、os.path模块中关于文件、目录常用的函数使用方法

    os模块中关于文件/目录常用的函数使用方法 函数名 使用方法   getcwd()   返回当前工作目录   chdir(path)   改变工作目录   listdir(path='.')   列举 ...

  5. python编程os、os.path 模块中关于文件、目录常用的函数使用方法

    os模块中关于文件/目录常用的函数使用方法   函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名( ...

  6. node.js模块中exports和module.exports的区别

    Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. CommonJS规范规定 ...

  7. python中datetime模块中strftime/strptime函数

    f==format p==parse 1.获取当前时间(日期格式) from datetime import datetime datetime.now()#输出 datetime.datetime( ...

  8. nodejs模块中exports和module.exports的区别

    通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ ,这些核心模块被编译成二进制文件,可以require('模块名')去获取:核心 ...

  9. copy模块中的copy与deepcopy的区别

    前言 每空闲下来,就觉得以前写的博客很low........也许现在也很low~~~~好吧就当升级版的low吧~~~~ 如果要了解copy与deepcopy的区别,就需要了解Python的存储机制:P ...

  10. python之requests模块中的params和data的区别

    params的时候之间接把参数加到url后面,只在get请求时使用: import requests url='https://api.ireaderm.net/account/charge/info ...

随机推荐

  1. 【Spring】Spring的@Autowire注入Bean的规则测试

    背景 在项目中使用Spring的Bean,一般都使用默认的Bean的单例,并且结合@Autowire使用. 实在有同一个类型多个实例的情况,也使用@Qualifier或@Resource实现注入. 所 ...

  2. 【Blender】插件开发笔记

    [Blender]插件开发笔记 开发环境配置 打开设置"界面-开发选项": 这样可以通过对功能按钮的右键菜单直接复制或查看其源码,以及快速跳转到 API 手册. 打开设置" ...

  3. Ansible - [02] 基础配置以及常用操作场景

    Ansible 基础配置 主配置文件:/etc/ansible/ansible.cfg ansible配置文件查找顺序 首先检测ANSIBLE_CONFIG变量定义的配置 其次检查当前目录下的./an ...

  4. DOCKER20231217: 容器引擎Docker

    1.1 Docker简介 1.1.1 什么是Docker? 一种轻量级的操作系统虚拟化技术,基于Go语言实现的开源容器项目,诞生于2013年,最初发起者是dotCloud公司(现 Docker Inc ...

  5. pandas如何处理跳过表头操作

    1.打印前5行数据,发现存在'NAN' 2.如果这个问题不处理,后续要到操作列时,会报错误''DataFrame' object is not callable' 思路: 跳过有NAN的行 def t ...

  6. 红黑树和b+树

    二叉搜索树 满足以下条件: 对于根节点,左子树中所有节点的值 < 根节点的值 < 右子树中所有节点的值. 任意节点的左.右子树也是二叉搜索树,即同样满足条件 1. 这是一个正常的,没有碰到 ...

  7. Golang 入门 : 常量

    常量 相对于变量而言,常量是在程序使用过程中,不会改变的数据.有些地方你需要将定义好的常量重复使用,代码中你不允许它的值改变.例如 圆周率 在程序执行过程中不会改变. 常量的声明 const Pi f ...

  8. php7安装redis6扩展

    1.下载 php-redis扩展下载地址: http://pecl.php.net/package/redis 具体下载版本以自己的PHP版本信息为准 linux下载命令 wget http://pe ...

  9. 通过 openpyxl 操作 excel 表格

    博客地址:https://www.cnblogs.com/zylyehuo/ STEP1: 导入相关库 import os from openpyxl import load_workbook STE ...

  10. PHP文件上传封装

    class FileUploader { private $targetDirectory; private $allowedExtensions; private $maxFileSize; pub ...