day16——import、datetime获得时间、时间格式的相互转换

在日常的开发工作中,我们要写很多的Python代码,如果都写在一个文件中,会导致代码特别难维护,为了拓展代码的可维护性,我们把函数写在不同的文件里,这样每个文件包含的文件就比较少,逻辑更加清楚。在Python中,我们创建的文件基本都是以.py结尾,那一个.py的文件就称之为模块。

为了方便管理模块,Python中又引入了包(Packge)这个概念,每个包下面都有一个__init__.py文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码。因为__init__.py本身就是一个模块,举个例子:test目录下面有__init_py,app.py,bbb.py三个文件,

a)import导入

有时候一个文件或者一个包中已经出现了一个函数,我们在另一个Python代码中需要引入该文件或者该文件的某个函数,那怎么解决呢?Python给我们提供一个关键字import,下面我们来了解一下它的用法:

1.如果是本地导入文件,直接使用:import filename

2.如果导入的是一个包,该包下面必须是有__init__.py文件才可以导入,否则报错,只有有了__init__.py文件,Python解析器才会把这个目录当成包。

常用的导入模块格式:

form xxx import xxx

import xxx

在导入的时候,.py的后缀直接省略,如果是多级的包,或者想导入包里面的函数等,可以使用from进行导入,举个例子:

from aaa import bbb

import os

解释:第一个例子是导入aaa包下面的bbb模块或者导入aaa文件下面的bbb类或者函数。

第二个import是直接导入系统模块os模块。

#import 一般我们用作导入模块来用,常用的快捷键是 alt + Enter就可以直接导入模块

#from ... import ... 这个是从什么模块中导入什么,最终你可以导入的是一个函数,也可以是一个类,也可以是一个模块

#总结:就是一层一层的调用就可以了。

#注意:1.import后面导入的是什么,在调用的时候,就必须写什么,除非你用from进行导入

2.导入的时候不写后缀名字

datetime获得时间

The distinction between naive and aware doesn‘t apply to timedelta objects

Subclass relationships:

object

timedelta

tzinfo

time

date

datetime

time

在Python文档里,time是归类在Generic Operating System Services中,换句话说,它提供的功能是更加接近于操作系统层面的。通读文档可知,time模块是围绕着Unix Timestamp进行的。time模块基于不用于取时间,取时间推荐使用datetime模块

Python开发过程中,我们经常会用到获取当前时间,根据当前时间生成一个和当天时间相关的文件,这样我们在后期看查找文件的时候就方便了很多,那Python又如何来获取当前时间呢?

1 from datetime import datetime
2 now_time = datetime.now()
3 a = now_time.strftime(‘%Y-%m-%d‘)
4 print(now_time)
5 print(a)
6 print(type(now_time))

打印结果为:

解释:

1.先导入datetime类

2.通过datetime的now方法就获得当前所需要的时间

3.datetime还是有好多方法的,可以获取year,month等,请通过dir()访求查看

4.此时我们获得的now_time还是一个datetime类,所以我们需要用strftime方法转换成字符串,strftime的参数就是最终需要字符串的形式

5.strftime需要便是时间的参数有很多,下面我们介绍一下最长用的一些参数:

格式参数:

%Y    :带世纪部分的十制年份

%m   :十进制表示的月份

%d    :十进制表示的每月的第几天

%H    :24小时制的小时

%M   :十进制表示的分钟数

%s     :十进制的秒数

%c     :标准时间。如:04/25/17 14:35:14    类似于这种形式

这几个参数就是最常用到的我们用的时间

此时还有一个问题,就是在我们开发过程中,经常要取昨天的时间,或者明天的时间,那又应该怎么办呢?

例子:

1 from datetime import datetime,timedelta
2 now_time = datetime.now()
3 a = now_time.strftime(‘%c‘)
4 print(now_time)
5 print(a)
6 b = now_time + timedelta(days =-1)
7 print(b)

打印结果为:

解释:

Timedelta可以接收days和seconds两个参数,正数代表几天之前的,负数代表几天之前的,所以b代表的是一天之前的时候。

#time独有的用法:

 1 import time
 2
 3 for i in xrange(1,4):
 4     print (i)
 5     time.sleep(0.1)
 6
 7 #datetime
 8
 9 from datetime import datetime, timedelta
10
11 now_time = datetime.now()
12 print(now_time)
13 new_time = now_time.strftime(‘%Y-%m-%d %H:%M:%S‘)
14 a = now_time.strftime(‘%c‘)
15 print(new_time)
16 print(a)

#now 获得当前的时候,strftime用来表示显示时间的格式

#如果我们要取昨天或者明天的日期,

1 print(‘#‘*30)
2 now_time = datetime.now()
3 yesterday = now_time + timedelta(days =- 1)
4 tomorrow = now_time + timedelta(days =- 1)
5 tomorrow_1 = now_time + timedelta(days=-1)
6 tomorrow = tomorrow_1.strftime(‘%Y-%m-%d‘)
7 print(yesterday)
8 print(tomorrow)

返回结果为:

时间格式的相互转换

时间的三种存在方式:时间对象、时间字符串,时间戳

(1)字符串转datetime:

1 from datetime import datetime,timedelta
2 string = ‘2017-04-25 11:59:58‘
3 time1 = datetime.strptime(string,‘%Y-%m-%d %H:%M:%S‘)
4 print(time1)
5 print(type(time1))

打印结果为:

(2)datetime转字符串

1 from datetime import datetime,timedelta
2 string = ‘2017-04-25 11:59:58‘
3 time1 = datetime.strptime(string,‘%Y-%m-%d %H:%M:%S‘)
4 print(time1)
5 print(type(time1))
6 time1_str = datetime.strftime(time1,‘%Y-%m-%d %H:%M:%S‘)
7 print(type(time1_str))
8 print(time1_str)

打印结果为:

(3)时间戳转时间对象:

1 from datetime import datetime,timedelta
2 import time
3 time1 = time.time()
4 print(time1)
5 time1_str = datetime.fromtimestamp(time1)
6 print(time1_str)
7 print(type(time1_str))

打印结果为:

解释:

1.datetime模块是包装了time模块的,所以只需要了解datetime模块就可以

2.time.time()是或者当前时间的时间戳,时间戳是指格林威时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数

3.datetime下面有个函数fromtimestamp(时间戳)会把时间戳自动转换成datetime类型

 1 from datetime import datetime
 2 import time
 3
 4 now_time = datetime.now()
 5 print(now_time)
 6 print(type(now_time))
 7 print(‘###################time to str###################‘)
 8 _time = now_time.strftime(‘%Y-%m-%d %H:%M:%S‘)
 9 _time = datetime.strftime(now_time,‘%Y-%m-%d %H:%M:%S‘)
10 print(_time)
11 print(type(_time))
12 print(‘###################str to time###################‘)
13 _d_time = datetime.strptime(_time,‘%Y-%m-%d %H:%M:%S‘)
14 print(_d_time)
15 print(type(_d_time))
16
17
18
19 print(‘###################时间戳stamp###################‘)
20 #时间戳转换成时间对象
21 _a = time.time()
22 print(_a)
23 _n_time = datetime.fromtimestamp(_a)
24 print(_n_time)
25 print(type(_n_time))

打印结果为:

时间: 2024-10-16 13:04:01

day16——import、datetime获得时间、时间格式的相互转换的相关文章

10.2-10.3 datetime与时间格式的相互转换

Subclass relationships: 这类直接的对应关系 # object # timedate # tzinfo # time       #基本不使用 # date # datetime    #一般使用 datetime 取时间 import time for i in range(1,10):     print(i)     time.sleep(0.1)      # datetime from _datetime import datetime print(datetim

DateTime.TryParseExact 万能时间格式转化

本文转载:http://blog.csdn.net/gaofang2009/article/details/6073231 前天同事问C#有没有相关的方法能把"年月日时分秒"这样的字符串转化为DateTime对象,我之前没碰这样的问题,没处理过,不知道有没有,但想想挺复杂的,例如同样的时间"2010-4-8 12:30:01"就有好几种表示方法: 引用内容 2010040812300120104812301100408123001104812301 可能还有更多,要

Python datetime获取详细时间

说明:datetime是date和time的结合体,包含了date和time的所有信息 datetime常见用法: 1.datetime.datetime.now()返回一个UTC时间的datetime对象 >>> from datetime import *>>> print datetime.now()2017-09-05 16:36:59.637000 2.datetime.datedelta()和datetime.datetime.now()结合获取当前时间前(

Java时间日期格式转换

import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 yyyy-MM-dd HH:mm:ss */ public static Date getNowDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd

C#时间格式之GMT时间的格式

GMT:格林尼标准时间 北京时间=GMT时间+8小时 DataTime nowDate = DataTime.Now; nowDate.toString("r");    效果为:  Wed, 22 Jul 2009 16:24:33 GMT 參数解释: d ShortDatePattern D LongDatePattern f 完整日期和时间(长日期和短时间) F FullDateTimePattern(长日期和长时间) g 常规(短日期和短时间) G 常规(短日期和长时间) m.

C#时间日期格式大全

C#时间/日期格式大全,C#时间/日期函数大全 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2016-7-1 14:33:34 如果要换成成201607,07-2016,2016-7-1或更多的该怎么办呢? 我们要用到: DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String format="D"; DateTime date=DataT

c# 输出不同时间的格式

C#时间/日期格式大全,C#时间/日期函数大全 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢? 我们要用到: DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String format="D"; DateTime date=DataT

sql 时间转换格式 convert(varchar(10),字段名,转换格式)

convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数,一般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到的函数的3个参数,第1个参数为,转换后的大小,第2个为转换日期的字段或函数,第3个为转换的格式. 具体如下:0 | 0 or 100 | mon dd yyyy hh:miAM(或P

Java时间日期格式转换 转自:http://www.cnblogs.com/edwardlauxh/archive/2010/03/21/1918615.html

Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 yyyy-MM-dd HH:mm:ss */ public static Date getNowDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateForma