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 ...
随机推荐
- logcat命令详解【一】
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用. 在使用logcat之前,请确保手机的USB调试 ...
- TCP协议三次握手连接四次握手断开和DOS攻击
转载:http://blog.csdn.net/fw0124/article/details/7452695 TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个tel ...
- ArcGIS Server
在ubuntu下安装 10.2 首先修改 /etc/security/limits.conf 添加 kun soft nofile 65535 kun hard nofile 65535 kun so ...
- [转载].NET商业软件源码保护
列举工作以来遇到的各种类型的软件所采用的代码保护技术,只讲原理不涉及技术细节实现,以避免产生法律问题.有些朋友说直接把代码放在Github开源下载,开源可以促进技术交流与进步,然而值钱的代码都积压在硬 ...
- C#winform自定义滚动条
1.控件 一个UserControl作为ScrollBg,一个panel作为ScrollBar 2.实现功能 (1)设置滚动条背景颜色和背景图片 (2)设置滚动条滑块的背景颜色和背景图片 (3)鼠标左 ...
- Spring Boot - Spring Cache
缓存 服务器自身(内存)的缓存 利用java程序中的变量 简单 集群环境中多个实例无法共享同步 缓存服务器(一般支持集群.分布式) Redis Memcached Spring中使用注解使用缓存 启动 ...
- 如何跟踪sharepoint详细日志
PS C:\Users\setup.moss> Set-SPLogLevel -TraceSeverity verboseexPS C:\Users\setup.moss> New-SPL ...
- 【题解】 [NOI1999]生日蛋糕
题面 传送门 Solution 搜索每一层的半径和高度,然后加入一些剪枝就好了. #include<stdio.h> #include<stdlib.h> #include&l ...
- opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程
很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...
- Mysql内置功能《六》流程控制
一 流程控制 delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THEN SELECT ...