本帖最后由 afan 于 2020-4-20 19:56 编辑
Local $str = 20200418
Local $expstr = '2020/4/17'
MsgBox(0, '不要分隔符', $str & ' -> ' & _DateSepFormat($str) & @LF & _
$expstr & ' -> ' & _DateSepFormat($expstr))
MsgBox(0, '使用 / 分隔符', $str & ' -> ' & _DateSepFormat($str, '/') & @LF & _
$expstr & ' -> ' & _DateSepFormat($expstr, '/'))
MsgBox(0, '使用 - 分隔符', $str & ' -> ' & _DateSepFormat($str, '-') & @LF & _
$expstr & ' -> ' & _DateSepFormat($expstr, '-'))
Func _DateSepFormat($sDate, $sSep = '') ; 日期有否分隔符互转
;~ ###(日期,分隔符)
If $sSep = '' Then
If StringRegExp($sDate, '^\d{8}$') Then Return $sDate
Local $aData = StringRegExp($sDate, '^(\d{4})\D+(\d{1,2})\D+(\d{1,2})$', 1)
If @error Then Return SetError(1, 0, '')
Return StringFormat('%s%02s%02s', $aData[0], $aData[1], $aData[2])
EndIf
If StringRegExp($sDate, '^\d{8}$') Then
Local $aData = StringRegExp($sDate, '(....)(?:0?(.|..))(?:0?(.|..)$)', 1)
Else
Local $aData = StringRegExp($sDate, '^(\d{4})\D+(\d{1,2})\D+(\d{1,2})$', 1)
EndIf
If @error Then Return SetError(1, 0, '')
Return $aData[0] & $sSep & $aData[1] & $sSep & $aData[2]
EndFunc ;==>_DateSepFormat
|