Golang 和Python 几个小时前 几分钟 几天前的处理
在用golang爬虫的时候
总会遇到 10天前 10分钟前 刚刚这种很影响我们爬取正常事件
所以我写了个方法 来格式化这种事件
golang 版本
package utils
import (
"fmt"
"regexp"
"strconv"
"strings"
"time"
)
func HoursBeforeDayBeforeFormat(arcTime string) string {
arcTime = strings.TrimSpace(arcTime)
timeList := [...]string{
"小时前",
"分钟前",
"刚刚",
}
t := time.Now() // 获取当前时间
currentTime := t.Format("2006-01-02 15:04:05") //获取当前格式的日期
for _, _value := range timeList {
isContains := strings.Contains(arcTime, _value)
if isContains {
nowHour := time.Now().Format("15")
pattern := regexp.MustCompile(`\d+`)
afterNumber := pattern.FindString(arcTime)
if afterNumber == "" {
if arcTime == "刚刚" {
return currentTime
} else {
return "请传入带有数字类型 比如:5小时前"
}
}
if afterNumber <= nowHour {
return currentTime
} else if strings.Contains(arcTime, "分钟前") {
return currentTime
} else {
beforeDay := t.AddDate(0, 0, -1)
return beforeDay.Format("2006-01-02 15:04:05")
}
}
}
if strings.Contains(arcTime, "天前") {
pattern := regexp.MustCompile(`\d+`)
afterNumber, err := strconv.Atoi(fmt.Sprint("-", pattern.FindString(arcTime)))
if err != nil {
return fmt.Sprintln(arcTime, "正则提取错误")
}
return fmt.Sprintln(t.AddDate(0, 0, afterNumber).Format("2006-01-02 15:04:05"))
} else {
return arcTime
}
}
Python版本
# -*- coding: utf-8 -*-
# @Time : 2022/8/19 11:31
# @Author : lzc
# @Email : hybpjx@163.com
# @File : __init__.py.py
# @Software: PyCharm
import operator
from datetime import datetime, timedelta
import re
def number_turn_to(input_data):
regex_list = [
{"name": "一", 'value': 1},
{"name": "二", 'value': 2},
{"name": "三", 'value': 3},
{"name": "四", 'value': 4},
{"name": "五", 'value': 5},
{"name": "六", 'value': 6},
{"name": "七", 'value': 7},
{"name": "八", 'value': 8},
{"name": "九", 'value': 9},
{"name": "十", 'value': 10},
]
for i1 in regex_list:
for i2 in i1['name']:
input_data = re.sub(i2, str(i1['value']), input_data)
return input_data
def hoursBefore_dayBefore_format(arc_time):
arc_time = number_turn_to(arc_time.strip())
time_list = [
"小时前",
"分钟前",
"刚刚",
]
now_time = datetime.strftime(datetime.today(), '%Y-%m-%d')
for t in time_list:
IsContains = operator.contains(arc_time, t)
if IsContains:
now_hour = datetime.strftime(datetime.today(), "%H")
pattern = re.search(r"(\d+)", arc_time)
if not pattern:
if arc_time == "刚刚":
return now_time
else:
return "请传入带有数字类型 小时前"
arc_hour = pattern.group(1)
if arc_hour <= now_hour:
# 24小时之前,一律替换成当天日期
return now_time
elif "分钟前" in arc_time:
return now_time
else:
arc_time = datetime.strftime(datetime.today() + timedelta(days=-1), '%Y-%m-%d') # 获取前1天日期
return arc_time
if "天前" in arc_time:
try:
d = [str(d) + '天前' for d in range(1, 15)]
arc_time = datetime.strftime(datetime.today() + timedelta(days=(d.index(arc_time) + 1) * -1),
'%Y-%m-%d')
return arc_time
except Exception:
return f"转换失败 当前时间{now_time},网站中的时间{arc_time}"
else:
return arc_time
if __name__ == '__main__':
print(hoursBefore_dayBefore_format("一天前"))
Golang 和Python 几个小时前 几分钟 几天前的处理的更多相关文章
- python 获取几小时之前,几分钟前,几天前,几个月前,及几年前的具体时间
引入以下两个包: import datetime import arrow 具体代码 # import datetime # import arrow def getTime(self, flag,d ...
- 想涨工资吗?那就学习Scala,Golang或Python吧
[编者按]据薪水调查机构 PayScale 提供的数据显示,掌握 Scala,Golang 和 Python 语言以及诸如 Apache Spark 之类的大数据技术,能带来最大的薪水提升.本文作者为 ...
- DES对称加密算法实现:Java,C#,Golang,Python
数据加密标准(DES,Data Encryption Standard,简写DES)是一种采用块密码加密的对称密钥算法,加密分组长度为64位,其中8.16.24.32.40.48.56.64 等8位是 ...
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]
2017年的golang.python.php.c++.c.java.Nodejs性能对比[续] 最近忙,这个话题放了几天,今天来个续集. 上篇传送门: 2017年的golang.python.p ...
- golang与python多线程的并发速度
一.golang的代码 package main import ( "fmt" "time" ) func Text_goroute(a int, b int) ...
- 使用C#把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前
//使用C#把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前 //2008年03月15日 星期六 02:35 public string DateStringFromNow(DateTim ...
- golang和python互相调用
http://blog.yuanzhaoyi.cn/2018/06/27/golang_python.html python3-ctypes: https://docs.python.org/3.5/ ...
- Golang调用Python
https://yq.aliyun.com/articles/117329 Python是时髦的机器学习御用开发语言,Golang是大红大紫的新时代后端开发语言.Python很适合让搞算法的写写模型, ...
随机推荐
- UI自动化框架搭建之Python3
UI自动化框架搭建--unittest 使用的代码是Python3版本,与时俱进哈哈 解释一下我的框架目录接口(每个人框架的目录接口不一样,根据实际要求) common目录:公共模块,这个地方可以存放 ...
- React报错之React Hook 'useEffect' is called in function
正文从这开始~ 总览 为了解决错误"React Hook 'useEffect' is called in function that is neither a React function ...
- ak日记 831 dxm
import sys from math import inf line = sys.stdin.readline().strip() vs = list(map(int, line.split()) ...
- KingbaseFlySync ddl变更流程
关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java 一.ddl变更流程 1. 停掉客户业务,保证没有新数据产生 确认Oracle数据库上所有 ...
- 02-MyBatisPlus入门
快速开始参考:https://baomidou.com/pages/226c21/ 测试项目: mybatis_plus 数据库:mybatis_plus 一.创建并初始化数据库 1.创建数据库: m ...
- void指针;函数指针
void 类型指针 void => 空类型 void* => 空类型指针,只存储地址的值,丢失类型,无法访问,要访问其值,我们必须对这个指针做出正确的 类型转换,然后再间接引用指针.voi ...
- docker还原挂载在宿主机的mysql数据
ps:有个项目的数据库之前是docker的mysql镜像,数据都去mysql的镜像里面拿数据,但是目前镜像里面的数据库是空的,所以现在来说明一下如何恢复数据 1.创建数据卷 docker volume ...
- echarts pie饼状图绑定点击事件
var valueData = [ {value: 33,name: '诊所'}, {value: 29,name: '汽车服务相关'}, {value: 27, name: '洗衣店'}, {val ...
- Java程序设计(五)作业
题目1:Lisa正在编写一个能够计算三科--数学.英语.程序设计基础--平均成绩(平均成绩=三科总成绩/3)和智育成绩(智育成绩=三科总成绩*0.7)的程序.由于两个成绩的获得都要先计算总成绩,因此她 ...
- CSS基础-关于CSS注释的添加
在 CSS 中增加注释很简单,所有被放在/*和*/分隔符之间的文本信息都被称为注释. CSS 只有一种注释,不管是多行注释还是单行注释,都必须以/*开始.以*/结束,中间加入注释内容. 1.注释放在样 ...