找回密码
 加入
搜索
查看: 526|回复: 5

[网络通信] 正則日期換算(已解決)

[复制链接]
发表于 2022-12-28 00:06:24 | 显示全部楼层 |阅读模式
本帖最后由 yohoboy 于 2022-12-29 00:05 编辑

因SQLite 不支援 yyyy/m/d 日期格式,只支援 yyyy-mm-dd 因此參考論壇之前的文章寫出以下代碼

$File_Read_Temp = '2022/2/4,08:41:30,4665782,-40,99.9,5,422.7375,60,4,16,-84,O9'
$File_Read_Temp = StringRegExpReplace($File_Read_Temp, '(\d+)/(\d+)/(\d+)', '$1-$2-$3')
$File_Read_Temp = StringRegExpReplace($File_Read_Temp,'-(\d)(?=\D|$)', '-0\1')
MsgBox(0,"",$File_Read_Temp)

得到的結果就符合所需
2022-02-04,08:41:30,4665782,-40,99.9,5,422.7375,60,4,16,-84,O9

但是因需要跑兩個指令做換算,因此想請問是否能正則替換 yyyy/m/d 改為 yyyy-mm-dd 等日期格式,
可以一段指令就可以跑完,謝謝各位大老的協助。
发表于 2022-12-28 09:31:00 | 显示全部楼层
为啥我只用第一条正则就得到你要的结果了?
发表于 2022-12-28 14:34:07 | 显示全部楼层
本帖最后由 afan 于 2022-12-28 14:35 编辑
holley 发表于 2022-12-28 09:31
为啥我只用第一条正则就得到你要的结果了?

2-4 没有补零 02-04

这种不管什么方法,至少要两次处理。用正则单次处理肯定不可能
发表于 2022-12-28 22:20:12 | 显示全部楼层

加一行代码又能咋滴
Local $File_Read_Temp = '2022/2/4,08:41:30,4665782,-40,99.9,5,422.7375,60,4,16,-84,O9'
Local $aDate = StringRegExp($File_Read_Temp, '(\d+)/(\d+)/(\d+)', 3)
If UBound($aDate) = 3 Then $File_Read_Temp = StringRegExpReplace($File_Read_Temp, '(\d+)/(\d+)/(\d+)', StringFormat("%04d-%02d-%02d", $aDate[0], $aDate[1], $aDate[2]))
MsgBox(0, "", $File_Read_Temp)

发表于 2022-12-28 23:39:01 | 显示全部楼层


$File_Read_Temp = '2022/2/14,08:41:30,4665782,-40,99.9,5,422.7375,60,4,16,-84,O9'
$File_Read_Temp = StringRegExpReplace(StringReplace($File_Read_Temp, '/', '-'), '(?<=\d-)(\d)(?!\d)', '0\1')
MsgBox(0,"",$File_Read_Temp)



 楼主| 发表于 2022-12-29 00:03:48 | 显示全部楼层
本帖最后由 yohoboy 于 2022-12-29 00:59 编辑



1. 回覆樓上
$File_Read_Temp = '2022/2/14,08:41:30,4665782,-40,99.9,5,422.7375,1/60,4,16,-84,O9' ;如果後面的資料有 "/"  時  , 例 1/60
$File_Read_Temp = StringRegExpReplace(StringReplace($File_Read_Temp, '/', '-'), '(?<=\d-)(\d)(?!\d)', '0\1')  ;將造成後面資料的 "/" 變成了 "-" ,不符所需,只需要針對日期處理,後面資料不更動
MsgBox(0,"",$File_Read_Temp)


2.總結

雖然cpu 效能很強,很快就轉換完成,但是要換算的筆數一多(萬行以上),多一行代碼就要多等待一段換算時間,能減少換算時間也能早點休息,不過感謝各大老的回覆,本問題就改為已解決,謝謝。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-25 14:15 , Processed in 0.074644 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表