2022年 11月 7日

Python 日期转换

 

经常会用到各种日期形式的转换,在这里做一下备忘

一、python常用的日期形式

1、时间戳:

  1. import time
  2. ticks = time.time()
  3. print("当前时间戳为:",ticks)
  4. >>>1524705721.8369513

注意:python是从1970年1月1日开始计时的,而matlab是从头开始计时的,要注意起始时间,按秒计算。

2、字符串:转换成带杠形式

  1. GPS_second[row] = 1578532832.0 #时间戳
  2. Struct_day = time.localtime(GPS_second[row]) #由时间戳变成时间元组
  3. str_date = time.strftime("%Y-%m-%d", Struct_day) #由元组变成字符串
  1. str_date
  2. Out[8]: '2020-01-09'

3、时间元组(struct_time)

  1. Struct_day
  2. Out[7]: time.struct_time(tm_year=2020, tm_mon=1, tm_mday=9, tm_hour=9, tm_min=20, tm_sec=32, tm_wday=3, tm_yday=9, tm_isdst=0)

举个例子:将ICESat的GPS时间转换为日期

  1. base_second = (2018-1970) * 365 * 86400 + 12 * 86400 #delta_time的起始时间是2018.1.1,python的起始时间是1970.1.1,求出而者之间的秒数
  2. GPS_second = (tem + base_second) #距python的起始时间1970.1.1有多少秒,也就是时间戳
  3. for row in range(0, GPS_second.shape[0]):
  4. #row = 0
  5. Struct_day = time.localtime(GPS_second[row]) #由时间戳变成时间元组
  6. str_date = time.strftime("%Y-%m-%d", Struct_day) #由元组变成字符串
  7. #cycle_column_str = cycle_column + '_str'
  8. good_p.loc[row, 'time_date'] = str_date

二、将不带杠的日期形式转换为天数,为了进行时间序列的分析

  1. from dateutil.parser import parse
  2. from matplotlib.pylab import date2num
  3. grid_06.loc[row_time, 'M_time'] = '20200421
  4. grid_06.loc[row_time, 'M_time_date'] = parse(grid_06.loc[row_time, 'M_time'])
  5. grid_06.loc[row_time, 'M_time_day'] = date2num(grid_06.loc[row_time, 'M_time_date'])

1、先用parse变成时间元组

  1. grid_06.loc[row_time, 'M_time_date'] 
  2. Out[5]: datetime.datetime(2020, 4, 21, 0, 0)

2、再用date2num换成天数

  1. grid_06.loc[row_time, 'M_time_day']
  2. Out[6]: 737536.0

部分参考:https://blog.csdn.net/zhubao124/article/details/80088843