Bone 发表于 2018-10-4 23:10:47

14位日期时间格式化两种方法

本帖最后由 Bone 于 2018-10-4 23:18 编辑

发现查询出来的时间值在数据库查询中正常
从AU3查出来就是'20181004225519'这样的纯数字的
看了看帮助_DateTimeFormat无法直接对这种字符串进行日期时间的格式化

论坛中搜索看到了方法一
补充了一个方法二
仅做备份

$Value = '20181004225519'
;~ 方法一
If StringLen($Value) = 14 Then
      $Data = StringMid($Value, 1, 4) & "-" & StringMid($Value, 5, 2) & "-" & StringMid($Value, 7, 2)
      $Time = StringMid($Value, 9, 2) & ":" & StringMid($Value, 11, 2) & ":" & StringMid($Value, 13, 2)
      $D_T = $Data & " " & $Time
      MsgBox(0, 0, $D_T)
Else
      MsgBox(0, 0, '字符串不合法')
EndIf

;~ 方法二
If StringLen($Value) = 14 Then
      ConsoleWrite(StringFormat("%04i/%02i/%02i %02i:%02i:%02i",StringMid($Value,1,4),StringMid($Value,5,2),StringMid($Value,7,2),StringMid($Value,9,2),StringMid($Value,11,2),StringMid($Value,13,2)) & @CRLF)
EndIf






zghwelcome 发表于 2018-10-5 09:44:47


$str = '20181004225519'
$str = StringRegExpReplace($str, '^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$', '${1}/${2}/${3} ${4}:${5}:${6}')
If @extended <> 0 Then
        MsgBox(0, 0, $str)
Else
        MsgBox(16, 0, '非14位数')
EndIf


顽固不化 发表于 2018-10-5 08:32:56

方法3:
#include <String.au3>
$Value = '20181004225519'
$new=_StringInsert(_StringInsert(_StringInsert(_StringInsert(_StringInsert($Value,'-',4),'-',7),' ',10),':',13),':',16)
MsgBox(0,0,$new)

Bone 发表于 2018-10-5 16:54:34

本帖最后由 Bone 于 2018-10-5 16:56 编辑

2楼3楼的方法也很棒

绿色风 发表于 2018-10-5 17:59:35

要不要再来个 StringSplit的

Bone 发表于 2018-10-5 18:27:04

绿色风 发表于 2018-10-5 17:59
要不要再来个 StringSplit的

大神来一个~
页: [1]
查看完整版本: 14位日期时间格式化两种方法