超全日期的转换
def convert_month_to_number(self, month_name):
month_names = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月",
"十二月"]
month_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
eng_names = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
if str(month_name) in month_names:
for i, month in enumerate(month_names):
if month_name.upper() == month.upper():
return month_numbers[i]
elif str(month_name) in eng_names:
for i, month in enumerate(eng_names):
if month_name.upper() == month.upper():
return month_numbers[i]
else:
return None
def get_date_month(self, date_str, strftime_str):
print(date_str)
eng_names = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
if len(date_str) == 0:
return date_str
# try:
if len(date_str) < 7:
delta = pd.Timedelta(str(date_str) + 'days')
time_str = pd.to_datetime('1899-12-30') + delta
strTime = time.strftime(
"%Y-%m-%d",
time.strptime(
str(time_str),
"%Y-%m-%d %H:%M:%S"))
return strTime
if "T" in date_str and "," not in date_str:
return str(datetime.datetime.strptime(
date_str[0:19], "%Y-%m-%dT%H:%M:%S").strftime(strftime_str))
# ebay的
if '-' in date_str:
parts = date_str.split("-")
month = parts[0]
day = parts[1]
year = parts[2]
if len(str(year)) < 4 and '月' in month:
try:
re_month = self.convert_month_to_number(month)
get_month = '{}-{}-{}'.format(re_month, day, year)
date_time = datetime.datetime.strptime(get_month, '%m-%d-%y').strftime(strftime_str)
except:
print('-------')
print(date_str)
date_time = datetime.datetime.strptime(date_str, '%m月-%d-%y').strftime(strftime_str)
elif len(str(year)) < 4 and month in eng_names:
get_month = '{}-{}-{}'.format(month, day, year)
date_time = datetime.datetime.strptime(get_month, '%b-%d-%y').strftime(strftime_str)
elif '月' in date_str:
date_time = datetime.datetime.strptime(
date_str, "%Y月-%m月-%d月").strftime(strftime_str)
else:
date_time = datetime.datetime.strptime(
date_str, "%Y-%m-%d").strftime(strftime_str)
return date_time
if "-" in date_str and "T" not in date_str:
try:
date_time = datetime.datetime.strptime(
date_str, '%Y-%m-%d').strftime(strftime_str)
except BaseException:
try:
date_time = datetime.datetime.strptime(
date_str, "%Y-%m-%d %H:%M:%S").strftime(strftime_str)
except BaseException:
date_time = datetime.datetime.strptime(
date_str, '%Y-%m-%d %H:%M:%S %z').strftime(strftime_str)
return date_time
if "/" in date_str:
if len(date_str.split('/')[-1]) < 4:
try:
date_time = datetime.datetime.strptime(
date_str, '%m/%d/%y').strftime(strftime_str)
except BaseException:
date_time = datetime.datetime.strptime(
date_str, '%Y/%m/%d').strftime(strftime_str)
else:
try:
date_time = datetime.datetime.strptime(
date_str, '%m/%d/%Y').strftime(strftime_str)
except BaseException:
date_time = datetime.datetime.strptime(
date_str, '%d/%m/%Y').strftime(strftime_str)
return date_time
if "," in date_str:
# 创建一个正则表达式模式,用于匹配四个字母的月份缩写
pattern = r'([A-Za-z]{4})'
# 查找匹配的文本
matches = re.findall(pattern, date_str)
for match in matches:
if match in self.month_mapping:
date_str = date_str.replace(match, self.month_mapping[match])
date_str = re.sub(
r'(\d+:\d+:\d+)\s*(a\.m\.|p\.m\.)',
r'\1 \2',
date_str)
date_str = date_str.replace('p.m.', 'PM').replace('a.m.', 'AM')
try:
return str(
datetime.datetime.strptime(
date_str,
"%b %d, %Y %H:%M:%S %p PDT").strftime(strftime_str))
except Exception as e:
return str(
datetime.datetime.strptime(
date_str,
"%b %d, %Y %H:%M:%S %p PST").strftime(strftime_str))
if len(date_str) == 19:
return str(
datetime.datetime.strptime(
date_str,
"%Y-%m-%d %H:%M:%S").strftime(strftime_str))
if len(date_str) >= 19:
return str(datetime.datetime.strptime(
date_str[0:19], "%Y-%m-%d %H:%M:%S").strftime(strftime_str))
# except BaseException:
# print('报错了', date_str)
# return date_str