python datetime

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

获取当前日期和时间

我们先看如何获取当前日期和时间:

>>> from datetime import datetime
>>> now = datetime.now() # 获取当前datetime
>>> print(now)
2015-05-18 16:28:07.198690
>>> print(type(now))
<class 'datetime.datetime'>

注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。

如果仅导入import datetime,则必须引用全名datetime.datetime

datetime.now()返回当前日期和时间,其类型是datetime

获取指定日期和时间

要指定某个日期和时间,我们直接用参数构造一个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。

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

>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> dt.timestamp() # 把datetime转换为timestamp
1429417200.0

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

某些编程语言(如Java和JavaScript)的timestamp使用整数表示毫秒数,这种情况下只需要把timestamp除以1000就得到Python的浮点表示方法。

timestamp转换为datetime

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

>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
2015-04-19 12:20:00

注意到timestamp是一个浮点数,它没有时区的概念,而datetime是有时区的。上述转换是在timestamp和本地时间做转换。

本地时间是指当前操作系统设定的时区。

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

字符串'%Y-%m-%d %H:%M:%S'规定了日期和时间部分的格式。详细的说明请参考Python文档。

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

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

datetime加减

对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+-运算符,不过需要导入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你可以很容易地算出前几天和后几天的时刻。

小结

datetime表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间。

如果要存储datetime,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关。

转载自https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431937554888869fb52b812243dda6103214cd61d0c2000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效精准分析定位系统BUG,让你无所不能

项目版本上线发版后&#xff0c;经常会收到领导、产品、研发、业务、用户等反馈过来各种各样BUG&#xff0c;令人心惊胆战&#xff0c;措手不及 这时领导会第一时间找你沟通&#xff0c;让其定位排查原因&#xff0c;解决处理 很多测试人员第一反应: 需求没说这样&#xff1f…

B KB MB

1字节8位8bit 名称缩写大小1千字节 KB 2^10 1,024 字节1 兆字节 MB 2^20 1,048,576 字节1 千兆字节 GB 2^30 1,073,741,824 字节1 T字节 TB 2^40 1,099,511,627,776 字节

【业务篇】史上最全经验版用例之IOS和Android版APP版本更新、IOS版规避审核?

一、IOS app设置苹果审核 为了app提交苹果能快速审核通过&#xff0c;故需设置app审核状态&#xff0c;隐藏部分敏感功能 1、线上app版本1.0.0&#xff0c;新版本app2.0.0测试通过&#xff0c;设置2.0.0版本app审核状态&#xff0c;隐藏2.0.0版本部分敏感功能&#xff0c;提交…

python 根据文件夹大小删除修改时间比较早的文件

根据文件夹大小定时删除文件夹部分比较旧的数据 import os import time import datetime FILE_DIR E:/Djangocode/RSMDSys/static/imagedata/ 计算文件夹容量 单位为MB def fileCapacity(FILE_DIR):s0for root, dirs, files in os.walk(FILE_DIR):for f in files:ssos.path.ge…

Python之Pymysql模块操作MySQL增删改查

Python3 MySQL 数据库连接 - PyMySQL 驱动 PyMySQL 连接数据库&#xff0c;实现增删改查 什么是 PyMySQL&#xff1f; PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库&#xff0c;Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&#x…

python计算程序运行时间

import time if __name__ __main__:time_starttime.time()#程序位置time_endtime.time()print(花费时间,time_end-time_start) #此处单位为秒

Python之日志处理(logging模块)详解

logging模块简介 logging模块是Python内置的标准模块&#xff0c;主要用于输出运行日志&#xff0c;可以设置输出日志的等级、日志保存路径、日志文件回滚等&#xff1b;相比print&#xff0c;具备如下优点 1、可以通过设置不同的日志等级&#xff0c;在release版本中只输出重…

神秘的安全测试思考案例(一)

定义&#xff1a;安全测试是在软件产品开发基本完成时&#xff0c;验证产品是否符合安全需求定义和产品质量标准的过程。 概念&#xff1a;安全测试是检查系统对非法侵入渗透的防范能力。 准则&#xff1a;理论上来讲&#xff0c;只要有足够的时间和资源&#xff0c;没有无法进…

STL Map学习总结

1、 Map是关联容器&#xff0c;以键值对的形式进行存储&#xff0c;方便进行查找&#xff0c;关键词起到索引的作用&#xff0c;值则表示与索引相关联的数据&#xff0c;以红黑树的结构实现&#xff0c;插入删除等操作都可以在O(log n)时间内完成 2、它的特点是增加和删除节点…

【功能业务篇】APP获取用户定位、传参经纬度思考

常用的三种定位方式有&#xff1a;基于GPS定位、基于基站地位、基于wifi定位。 1、基于GPS定位&#xff1a; GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的。 GPS定位最大的优点就是其定位精确度高(一般误差在10m内),无网络也能用;缺点就是耗电高、定位慢、室…

cmd运行python程序

先cd到当前目录&#xff0c;然后python XXX.py

《业务测试》手机号码格式

一、手机号码格式测试 正确手机号格式 13333333333 14444444444 15555555555 16666666666 17777777777 18888888888 19999999999 错误的手机号格式 1333333333 10位手机号 10000000000 第2位为0 11111111111 第2位为1 12222222222 第2位为2 2333…

mysql 四种存储引擎

前言 数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能&#xff0c;使用不同的存储引擎&#xff0c;还可以 获得特定的功…

Android ADB调试之无线连接设备

Android无线调试 一、数据线连接手机和电脑&#xff08;首次设置需数据线连接&#xff09;&#xff0c;开启开发者模式和USB调试&#xff0c;确保手机和电脑已连接 cmd下执行adb devices 显示上图1&#xff0c;说明已连接 二、华为手机设置 1、开发人员选项 2、USB调试 3、…

python守护线程

1、守护子进程 主进程创建守护进程 其一&#xff1a;守护进程会在主进程代码执行结束后就终止其二&#xff1a;守护进程内无法再开启子进程,否则抛出异常&#xff1a;AssertionError: daemonic processes are not allowed to havechildren 注意&#xff1a;进程之间是互相独立…

【Python实战】使用python计算多种类型到期还款日

一般金融产品的账务测试时&#xff0c;我们会接触到还款方式&#xff0c;到期还款日等概念。 在自动化测试或者脚本使用中&#xff0c;我们需要动态的生成到期还款日去进行账务测试&#xff0c;这篇文章主要介绍了常见的几种到期还款日计算方式。 一、固定期限&#xff08;比如…

初识python多线程

1) 在python中如何创建一个线程对象&#xff1f; 如果你要创建一个线程对象&#xff0c;很简单&#xff0c;只要你的类继承threading.Thread&#xff0c;然后在__init__里首先调用threading.Thread的__init__方法即可&#xff1a; import threading class MyThread(threading…

Fiddler抓包工具之Filters(过滤器)进行会话过滤

一、设置User Fiters启用 未勾选Use Filters&#xff0c;未启用此功能&#xff1b;已勾选Use Filters&#xff0c;已启用此功能 二、Action设置 Run Filterset now :马上执行过滤&#xff0c;立即生效过滤 Load Filterset&#xff1a; 加载本地过滤文件到fiddler Save Filt…

【pyQT5】Python3+pyQT5开发环境安装与配置

在PyQt中编写UI界面可以直接通过代码来实现&#xff0c;也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构&#xff0c;其实现了视图和逻辑的分离&#xff0c;从而实现了开发的便捷。 Qt Designer中的操作方式十分灵活&#xff0c;其通过拖拽的方式放置控件可以随时…

C++运行界面一闪而过解决

#include<iostream> #include <stdlib.h> #切记导入这个头文件 using namespace std;int main() { cout << "Hello Word"<<endl; system("pause"); #让界面不是一闪而过 return 0; } 注意&#xff1a;VS2012以上版本才支持C 11…