最近在学习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时间戳转化为标准日期(日期转化为日期戳)的更多相关文章

  1. 如何将Excel日期快速转化为文本格式?

    Excel表中日期格式其实是数值,有时候需要原样转成文本,有时候也要将文本转成日期. 我发现了一个方法,估计是最快的了.不需要用那一堆year() month()之类的函数. 快速将日期格式转化为文本 ...

  2. Java中的日期格式转化

    package lianxi; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util ...

  3. 19、Python标准库: 日期和时间

    一.time时间模块 import time 1 .时间戳   时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. time_stamp = tim ...

  4. Python 标准类库-日期类型之datetime模块

    标准类库-日期类型之datetime模块    by:授客 QQ:1033553122 可用类型 3 实践出真知 4 timedelta对象 4 class datetime.timedelta(da ...

  5. Atitit.基于时间戳的农历日历历法日期计算

    Atitit.基于时间戳的农历日历历法日期计算 1. 农历xx年的大小月份根据万年历查询1 2. 农历xx年1月1日的时间戳获取1 3. 计算当年的时间戳与农历日期的对应表,时间戳为key,日期为va ...

  6. 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 ...

  7. js日期格式转化

    如果出现日期格式: /Date(1442742059253)/ 可用下面js方法转化 function ChangeDateFormat(cellval) {        var date = ne ...

  8. sql的日期格式化转化

    1. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. DATE_FORMAT(date,format) 可以使用的格式有: 格式 描述 %a 缩写星期名 %b 缩写月名 %c 月 ...

  9. Java中日期的转化

    4.如何取得年月日.小时分秒? 创建java.util.Calendar实例(Calendar.getInstance()),调用其get()方法传入不同的参数即可获得参数所对应的值,如:calend ...

随机推荐

  1. 视觉SLAM实战(一):RGB-D SLAM V2

    写在前面 首先打个广告.SLAM研究者交流QQ群:254787961.欢迎各路大神和小白前来交流. 看了前面三篇博文之后,是不是有同学要问:博主你扯了那么多有用没用的东西,能不能再给力一点,拿出一个我 ...

  2. [GO]获取命令行参数

    package main import ( "os" "fmt" ) func main() { list := os.Args n := len(list) ...

  3. Centos7下安装与卸载Jdk1.8

    安装 去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 使用xs ...

  4. Android滑动冲突解决方法

    叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了. 关于滑动冲突 滑动冲突分类 ...

  5. mysql多字段唯一索引

    项目中需要用到联合唯一索引: 例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定: 例如:user表中有userID,userName两个字段,如果不希望有2条 ...

  6. DFS实现全排列

    复习一下DFS实现全排列,具体思想见:https://www.cnblogs.com/chiweiming/p/9279858.html public class Main{ static int a ...

  7. Mysql的备份,权限与日志

    1>Mysql的数据备份    mysqldump 工具 --single-transaction 该选项导出数据之前提交一个BEGIN SQL语句,不会阻塞任何应该程序而且能保证导出数据时的一 ...

  8. VMware安装Ubuntu分辨率无法适应屏幕的解决方法

    ​ 一开始虚拟机安装Ubuntu的时候遇到分辨率无法适应屏幕的时候,百度了一大堆都说使用xrandr命令来修改分辨率,但是还是无法适应1920x1080的屏幕,强迫症表示非常难受! ​ 然后在不知道是 ...

  9. Java Input Stream Diagram

    JAVA IO Diagram |-- ByteArrayInputStream |-- BufferedInputStream |-- FileInputStream |-- DataInputSt ...

  10. window.open之postMessage传参数

    这次要实现一个window.open打开子视窗的同时传参数到子视窗,关闭的时候返回参数. 当然简单的做法非常简单,直接在window.open的URL之后接参数即可,但是毕竟get method的参数 ...