日期字符串转日期
pd.to_datetime
判断字符串是否是日期字符串
def canbe_date(x:str= "0"):
if (type(x)!= str) or x== "": # if (x in [None, "", pd.NaT]) or (type(x)!= str)
return False
try:
pd.to_datetime(x, format= "%Y-%m-%d")
return True
except:
return False
dict_datetime = {}
for i in [0, '0', '', np.nan, pd.NaT, None]:
try:
dict_datetime[i] = pd.to_datetime(i)
except:
dict_datetime[i] = 'error'
df_datetime = pd.DataFrame.from_dict(dict_datetime, orient='index', columns=['result']).reset_index()
df_datetime['index'] = df_datetime['index'].apply(lambda x: '\'' + str(x) + '\'' if isinstance(x, str) else x)
display(df_datetime)
获取文件的修改时间
import os
import time
import datetime
import pandas as pd
str_addr = r'D:\RPA\save'
dict_addr = {key: os.path.join(str_addr, key) for key in os.listdir(str_addr)}
dict_isfile = {key: value for key, value in dict_addr.items() if os.path.isfile(value)}
str_value = list(dict_isfile.values())[0]
# 获取文件_修改时间_时间戳
float_getmtime = os.path.getmtime(str_value) # 方法一
float_mtime = os.stat(str_value).st_mtime # 方法二,从文件状态stat中获取修改时间_时间戳
# 时间戳转化为时间
# 转化为指定时间格式字符串
# 方法一 time.localtime
StructTime_localtime = time.localtime(float_mtime) # time.struct_time(tm_year=2023, tm_mon=7, tm_mday=24, tm_hour=3, tm_min=2, tm_sec=19, tm_wday=0, tm_yday=205, tm_isdst=0)
time.strftime('%Y-%m-%d %H:%M:%S', StructTime_localtime)
# 方法二 time.ctime
str_ctime = time.ctime(float_mtime) # 'Mon Jul 24 03:02:19 2023'
datetime_strptime = datetime.datetime.strptime(str_ctime, '%a %b %d %H:%M:%S %Y') # datetime.datetime(2023, 7, 24, 3, 2, 19)
datetime_strptime.strftime('%Y-%m-%d %H:%M:%S')
# 方法三 datetime.datetime.fromtimestamp
datetime_fromtimestamp = datetime.datetime.fromtimestamp(float_mtime) # datetime.datetime(2023, 7, 24, 3, 2, 19, 278424)
datetime_fromtimestamp.strftime('%Y-%m-%d %H:%M:%S')
# 方法四 pandas.to_datetime
Timestamp_ToDatetime = pd.to_datetime(float_mtime, unit='s') # 如果传入的是10位时间戳,unit设置为秒 # Timestamp('2023-07-23 19:02:19.278424064')
Timestamp_ToDatetime.strftime('%Y-%m-%d %H:%M:%S')
os.path.getmtime()
函数用于获取文件的修改时间戳。time.localtime()
函数将时间戳转换为本地时间格式,然后使用 time.strftime()
函数将本地时间格式转换为指定的时间格式。最后,使用 print()
函数输出文件的修改时间。如果你需要获取文件的访问时间或创建时间,可以使用 os.path.getatime()
和 os.path.getctime()
函数,它们的用法与 os.path.getmtime()
函数类似。
time.
strftime
datetime
.strftime
pd.Timestamp.strftime
的区别
datetime.strftime
和time.strftime
都是用于将日期时间对象格式化为字符串的函数,但它们之间有一些区别。
- datetime.strftime:
- 用法:
datetime_obj.strftime(format)
- 参数:
format
是一个字符串,用于指定所需的日期时间格式。 - 返回值:返回一个格式化后的字符串。
- 功能:将
datetime
对象格式化为指定格式的字符串。 - 注意:
datetime.strftime
是datetime
模块中的方法,需要先将字符串解析为datetime
对象,然后才能使用该方法。
- time.strftime:
- 用法:
time.strftime(format, time_struct)
- 参数:
format
是一个字符串,用于指定所需的日期时间格式;time_struct
是一个时间元组或时间戳。 - 返回值:返回一个格式化后的字符串。
- 功能:将时间元组或时间戳格式化为指定格式的字符串。
- 注意:
time.strftime
是time
模块中的方法,可以直接使用时间元组或时间戳进行格式化,不需要先将字符串解析为datetime
对象。
总结:
datetime.strftime
适用于datetime
对象,需要先将字符串解析为datetime
对象,然后使用该方法进行格式化。time.strftime
适用于时间元组或时间戳,可以直接使用这些对象进行格式化,不需要先将字符串解析为datetime
对象。
在处理日期时间时,如果已经有datetime
对象,可以使用datetime.strftime
进行格式化;如果只有时间元组或时间戳,可以使用time.strftime
进行格式化。
time模块是Python中用于处理时间相关操作的模块,其中包含了一些常用的函数和类。time.ctime()函数和time.localtime()函数都是time模块中的函数,它们的作用和区别如下:
- time.ctime()函数:
- 作用:将一个时间戳(秒数)转换为一个可读的字符串表示,表示当前时间。
- 参数:可以传入一个时间戳,如果不传入参数,则默认使用当前时间。
- 返回值:返回一个字符串,表示可读的时间。
- time.localtime()函数:
- 作用:将一个时间戳(秒数)转换为一个本地时间的struct_time对象。
- 参数:可以传入一个时间戳,如果不传入参数,则默认使用当前时间。
- 返回值:返回一个struct_time对象,包含了年、月、日、时、分、秒等时间信息。
区别:
- 返回值类型不同:time.ctime()函数返回一个字符串,表示可读的时间;time.localtime()函数返回一个struct_time对象。
- 返回值内容不同:time.ctime()函数返回的字符串包含了星期和月份的英文缩写,以及具体的时间信息;time.localtime()函数返回的struct_time对象包含了年、月、日、时、分、秒等时间信息,但不包含星期和月份的英文缩写。
示例代码如下:
import time
# 使用time.ctime()函数
current_time = time.ctime()
print("当前时间(time.ctime()函数):", current_time)
# 使用time.localtime()函数
local_time = time.localtime()
print("当前时间(time.localtime()函数):", local_time)
print("年:", local_time.tm_year)
print("月:", local_time.tm_mon)
print("日:", local_time.tm_mday)
print("时:", local_time.tm_hour)
print("分:", local_time.tm_min)
print("秒:", local_time.tm_sec)
输出示例:
当前时间(time.ctime()函数): Fri Aug 26 11:20:56 2023
当前时间(time.localtime()函数): time.struct_time(tm_year=2023, tm_mon=8, tm_mday=26, tm_hour=11, tm_min=20, tm_sec=56, tm_wday=4, tm_yday=238, tm_isdst=0)
年: 2023
月: 8
日: 26
时: 11
分: 20
秒: 56
注意:time.localtime()函数返回的struct_time对象中的时间信息是以0开始的,即月份范围是1-12,星期范围是0-6。