excel时间戳转化为标准日期(日期转化为日期戳)
最近在学习python将数据导入到excel,发现日期变成数字而不是日期格式的问题。
第一眼看去肯定是excel单元格格式问题,一般excel单元格格式为常规,而常规处理日期时就显示为数字,所以就想到用一个特定的数字(知道具体日期的),增加一天对应的数字就加1。
先看看python直接导入后日期的样子(下面时我随机举例的):

我们需要日期数据替换成标准的日期格式,具体的思路是:
1、先用excel实验2019-5-02对应的日期时间戳是43587。

2、再用2019-5-02减43587看是从什么时候开始计算,结论是1899-12-30。
import pandas as pd
pd.to_datetime('2019-05-02')-pd.Timedelta('43587D') #D表示天
#Timestamp('1899-12-30 00:00:00')
3、那么最后时间戳转化为日期:就只需要当前时间戳+1899-12-30
批量转化(定义转化日期戳的函数,dates为日期戳)
方法一:用pd中得Timedelta和to_datetime
import pandas as pd def date(stamp): #这个有个弊端,输入得时间戳过大后报错,最大支持多少106751
delta = pd.Timedelta(str(stamp)+'D')
real_time = pd.to_datetime('1899-12-30') + delta
return real_time
方法二:用datetime模块得timedelta、datetime.strptime
import datetime def date(dates):
delta=datetime.timedelta(days=dates)
today=datetime.datetime.strptime('1899-12-30','%Y-%m-%d')+delta
#将1899-12-30转化为可以计算的时间格式并加上要转化的日期戳
return datetime.datetime.strftime(today,'%Y-%m-%d')#制定输出日期的格式
以下代码是将excel时间戳转化成标准日期,并替换原有列名的具体步骤:
import openpyxl
import datetime data = openpyxl.load_workbook(r'E:\work_hot\temp\docx\time_test.xlsx') def date(dates):
delta=datetime.timedelta(days=dates)
today=datetime.datetime.strptime('1899-12-30','%Y-%m-%d')+delta
return datetime.datetime.strftime(today,'%Y/%m/%d') list1 = []
for i in data['Sheet1'].columns:
list1.append([])
for row in data['Sheet1'].values:
for x in range(len(row)):
realtime = date(row[x]) #转化为具体时间,调用date方法
list1[x].append(realtime)
continue #遍历表格中的数据,将原值改为真实日期
i = 0
for row in data['Sheet1'].columns:
for j in range(len(list1[i])):
row[j].value = list1[i][j]
i += 1 data.save(r'E:\work_hot\temp\docx\time_test1234.xlsx') #我这里另存了一份,也可以保存到原文件中
结果图:

excel时间戳转化为标准日期(日期转化为日期戳)的更多相关文章
- 如何将Excel日期快速转化为文本格式?
Excel表中日期格式其实是数值,有时候需要原样转成文本,有时候也要将文本转成日期. 我发现了一个方法,估计是最快的了.不需要用那一堆year() month()之类的函数. 快速将日期格式转化为文本 ...
- Java中的日期格式转化
package lianxi; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util ...
- 19、Python标准库: 日期和时间
一.time时间模块 import time 1 .时间戳 时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. time_stamp = tim ...
- Python 标准类库-日期类型之datetime模块
标准类库-日期类型之datetime模块 by:授客 QQ:1033553122 可用类型 3 实践出真知 4 timedelta对象 4 class datetime.timedelta(da ...
- Atitit.基于时间戳的农历日历历法日期计算
Atitit.基于时间戳的农历日历历法日期计算 1. 农历xx年的大小月份根据万年历查询1 2. 农历xx年1月1日的时间戳获取1 3. 计算当年的时间戳与农历日期的对应表,时间戳为key,日期为va ...
- jquery 时间戳和日期时间转化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- js日期格式转化
如果出现日期格式: /Date(1442742059253)/ 可用下面js方法转化 function ChangeDateFormat(cellval) { var date = ne ...
- sql的日期格式化转化
1. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. DATE_FORMAT(date,format) 可以使用的格式有: 格式 描述 %a 缩写星期名 %b 缩写月名 %c 月 ...
- Java中日期的转化
4.如何取得年月日.小时分秒? 创建java.util.Calendar实例(Calendar.getInstance()),调用其get()方法传入不同的参数即可获得参数所对应的值,如:calend ...
随机推荐
- myeclipse快捷键记忆
提示 Alt+?自动排版 Ctrl+shift+f自动添加引入包 Ctrl+shift+O切换窗口 Ctrl+F6自动添加set get方法 Alt+shift+s r 查看都是哪里调用了该方法 Ct ...
- ubuntu 16.04启用root和ssh登录
1.设置用户密码 sudo passwd root 2.vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 末尾添加:greeter-show-m ...
- java 集合综述(总结于多位博友)
http://www.cnblogs.com/shunran/p/3459065.html(good) java集合类主要负责保存.盛装其他数据,因此集合类也称容器类. java集合类分为:set.l ...
- mybatis 简单实现 left join
sql -- 表a ta (id,aname,bid) -- 表b tb (id,bname) SELECT T1.*, T2.BNAME FROM TA T1 LEFT JOIN TB T2 ON ...
- 编写高质量代码改善C#程序的157个建议——建议83:小心Parallel中的陷阱
建议83:小心Parallel中的陷阱 Parallel的For和ForEach方法还支持一些相对复杂的应用.在这些应用中,它允许我们在每个任务启动时执行一些初始化操作,在每个任务结束后,又执行一些后 ...
- mybatis SqlMapConfig.xml
一.SqlMapConfig.xml 1.属性properties 在入门时,以抽取出连接数据库的属性得到properties文件. a.可以通过resource和url来获得属性. b.proper ...
- java 访问HTTPS rest服务
import java.io.*;import java.net.*;import java.security.cert.CertificateException;import java.securi ...
- python中用ElementTree.iterparse()读取xml文件中的多层节点
我在使用Python解析比较大型的xml文件时,为了提高效率,决定使用iterparse()方法,但是发现根据网上的例子:每次if event == 'end':之后elem.clear()或者是每次 ...
- WinAPI 字符及字符串函数(10): lstrcpy - 复制字符串
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- Android 画闹钟
1.今天就来模仿一下这个小闹钟的 2.思路: 先画闹钟的圆盘 ,在通过Path来画指针 两个耳朵其实就是用两个圆被一个大圆截取后留下的,并旋转一定度数后生成 3.直接上代码: public class ...