这里我们要用到的是python的内置模块,time模块。
顾名思义,这是一个和时间有关的模块。
导入time模块。
import time
第一步要做的就是从1970纪元后到目前为止度过的秒数(浮点类型)。
其实想要获得这个秒数,只有一个方法,就是通过time模块内的time方法来获得。
即timetime()
但是,timetime返回的这个高精度浮点数我们并不能准确的得到我们想要的当前时间。我们只知道这是从1970到目前为止已经过了多少秒。
这里我们还需要使用一个方法来把秒数变成当前的时间戳。
这时我们就要用到另外一个方法,localtime方法,该方法的参数为我们刚刚所说的1970年到目前为止的秒数,返回值为一个叫struct_time结构体,如果不懂什么叫结构体,没关系,也可以理解为localtime方法返回一个struct_time对象。
timelocaltime(timetime())
可以看到localtime方法的返回结果,从单词的字面上我们也能大概了解到:
前缀tm为time,year为年份,mon为月份,mday为日,hour为时,min为分,sec为秒等等
但是我们想要的并不是这种结果,我们想要获得一个易于理解的数据。
常见的asctime类型,例如显示结果如Wed Feb 13 15:46:11 2018
如果小伙伴常用Linux对这种类型显然不会陌生,在linux上,我们使用date命令,不进行时间格式化的话,就会输出这种形式的时间。
例如小编这里虚拟机内的linux,运行date的输出结果如图。
格式为:星期几 月份 日数 时:分:秒 年份
注意的是,在linux上的date默认会输出时间区域,例如默认的美国时间EDT,或者修改为我们大陆的北京时间CTS。
这里提供两种方法进行struct_time数据格式化。
第一种就是第4步讲述的asctime格式,我们调用time模块内的asctime方法即可,参数为struct_time对象数据,返回字符串,即asctime格式当前日期时间。
timeasctime(timelocaltime(timetime()))
'Wed Apr 4 20:27:15 2018'
翻译成中文是:
星期三 四月 4 20:27:15 2018
还有一个数据格式化的方法是time模块内提供的strftime方法。
str timestrftime(格式转化字符,时间戳)
格式转化字符如下:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地AM或PM的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
这里常用的小编就进行了加粗,其实常用的就是这几个。一定要记住的是:
%Y = 年,%m = 月,%d = 日,%H = 24制时,%M = 分,%S = 秒。
那么知道转化符的意义之后,我们做起来就很简单了。
例如我们可以获得当前时间和日期,然后获得当前是一年中的第几天,然后获得当前的时区
timestrftime("当前日期:%Y年%m月%d日",timelocaltime(timetime()))
#获得当前日期
timestrftime("当前时间:%H时%M分%S秒",timelocaltime(timetime()))
#获得当前时间
timestrftime("今天是%Y年的第%j天,时区为%Z",timelocaltime(timetime()))
代码只能在python3中有效运行,python2需要使用print输出(否则中文会变成16进制字符)。
python2运行如下,加上print即可:
print(timestrftime("当前日期:%Y年%m月%d日",timelocaltime(timetime())))
#获得当前日期
print(timestrftime("当前时间:%H时%M分%S秒",timelocaltime(timetime())))
#获得当前时间
print(timestrftime("今天是%Y年的第%j天,时区为%Z",timelocaltime(timetime())))
在进行新纪元时间(1970-01-01 00:00:00)以来的秒到实际时间之间转换的时候 MySQL 根据参数 time_zone 的设置有两种选择:
time_zone 设置为 SYSTEM 的话:使用 sys_time_zone 获取的 OS 会话时区,同时使用 OS API 进行转换。对应转换函数 Time_zone_system::gmt_sec_to_TIME
time_zone 设置为实际的时区的话:比如 ‘+08:00’,那么使用使用 MySQL 自己的方法进行转换。对应转换函数 Time_zone_offset::gmt_sec_to_TIME
实际上 Time_zone_system 和 Time_zone_offset 均继承于 Time_zone 类,并且实现了 Time_zone 类的虚函数进行了重写,因此上层调用都是 Time_zone::gmt_sec_to_TIME。
js中传入指定日期转换为时间戳,可以使用原生javascript的Date对象进行格式化 *** 作或第三方js库如momentjs进行格式化输出。以下是这2种方法的具体实现:
1、使用原生javascript的Date对象,进行格式化
(1)将日期字符串转换为Date类型的对象。
let d = new Date('2018-01-01')
(2)转换为时间戳。
let t = dgetTime(d) // 方法1
let t = dvalueOf(d) // 方法2
let t = dparse(d) // 方法3
2、第三方js库momentjs进行格式化
(1)在html中引入momentjs,添加以下script标签:
<script src=">
(2)将日期转换为时间戳
参数格式为:YYYY-MM-DD HH:mm:ss 或 YYYY-MM-DD
moment('2018-01-01')valueOf();
扩展资料:
1、js将当前日期转换为时间戳
let timeStamp = new Date()getTime()
2、js将时间戳转换为日期
let d = new Date(timestamp 1000);// 时间戳为10位需1000,时间戳为13位的话不需乘1000
let yyyy = dgetFullYear() + '-';
let MM = (dgetMonth()+1 < 10 '0'+(dgetMonth()+1) : dgetMonth()+1) + '-';
let dd = dgetDate() + ' ';
let HH = dgetHours() + ':';
let mm = dgetMinutes() + ':';
let ss = dgetSeconds();
return yyyy + MM + dd + HH + mm + ss;
time 模块常用的与时间相关的类和函数:
time 模块的 struct_time 类代表一个时间对象,可以通过 索引和属性名 访问值。 对应关系如下:
索引 —— 属性 值
0 —— tm_year(年) 如:1945
1 —— tm_mon(月) 1 ~ 12
2 —— tm_mday(日) 1 ~ 31
3 —— tm_hour(时) 0 ~ 23
4 —— tm_min(分) 0 ~ 59
5 —— tm_sec(秒) 0 ~ 61
6 —— tm_wday(周) 0 ~ 6
7 —— tm_yday(一年内第几天) 1 ~ 366
8 —— tm_isdst(夏时令) -1、0、1
localtime() 表示当前时间,返回类型为 struct_time 对象 ,示例如下所示:
输出结果:
time()——返回当前时间的时间戳
gmtime([secs])——将时间戳转换为格林威治天文时间下的 struct_time,可选参数 secs 表示从 epoch 到现在的秒数,默认为当前时间
localtime([secs])——与 gmtime() 相似,返回当地时间下的 struct_time
mktime(t) localtime() 的反函数
asctime([t]) 接收一个 struct_time 表示的时间,返回形式为:Mon Dec 2 08:53:47 2019 的字符串
ctime([secs]) ctime(secs) 相当于 asctime(localtime(secs))
strftime(format[, t]) 格式化日期,接收一个 struct_time 表示的时间,并返回以可读字符串表示的当地时间
sleep(secs) 暂停执行调用线程指定的秒数
altzone 本地 DST 时区的偏移量,以 UTC 为单位的秒数
timezone 本地(非 DST)时区的偏移量,UTC 以西的秒数(西欧大部分地区为负,美国为正,英国为零)
tzname 两个字符串的元组:第一个是本地非 DST 时区的名称,第二个是本地 DST 时区的名称
基本使用如下所示:
strftime 函数日期格式化符号说明如下所示:
import time
s="""斗罗大陆 2001-01-01 01:01:01 40106 100000000 224 202 2001-01-01 01:01:01 123456 100
苍穹大陆 2001-01-02 01:01:01 40107 100000000 200 210 2001-01-01 01:01:01 123456 100"""
starttime=timestrptime("2001-01-02 00:00:00","%Y-%m-%d %H:%M:%S")
summer=0
for s1 in ssplit('\n'):
line=s1split()
currenttime=timestrptime(line[1]+' '+line[2],"%Y-%m-%d %H:%M:%S")
if currenttime>starttime:
summer+=int(line[-1])
print(summer)
题主是否想询问“python无法读取excel时间戳井字号怎么办”?方法如下:
1、通过手动把Excel调整为想要的格式后,保存为csv格式。
2、通过代码读取数据,即通过另存为csv来降低Excel数据的精度,这样子时间数据就转换为str格式。
以上就是关于python如何只获取日期全部的内容,包括:python如何只获取日期、python中怎么把datetime类型转换成timestamp、获取获取系统三天前时间戳,然后转换为指定格式日期(年/月/日 时:分:秒)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)