Замена двоеточие на точку в строке метки времени

Рейтинг: 0Ответов: 2Опубликовано: 15.03.2023

Имеется строковый массив с метками времени в формате "yyyy-MM-dd HH:mm:ss:fff". Требуется заменить двоеточие на точку перед миллисекундами, чтобы получилось "yyyy-MM-dd HH:mm:ss.fff".

Пробовал сделать так:

$TimeStr = "2023-01-16 08:00:00:000"
$TimeStr = $TimeStr.replace("00:000", "00.000")

В результате получаю строку "00:00.0". Подскажите, пожалуйста, как сделать правильно?

Ответы

▲ 0Принят

Один из вариантов - найти последнее двоеточие, вырезать подстроки слева и справа и соединить их через точку

$TimeStr = "2023-01-16 08:00:00:000"
$pos = $TimeStr.LastIndexOf(':')
$TimeStr = $TimeStr.Substring(0,$pos-1)+"."+$TimeStr.Substring($pos+1)
$TimeStr

Или оператором замены с помощью регулярного выражения:

$TimeStr = "2023-01-16 08:00:00:000"
$TimeStr = $TimeStr -replace ':(\d+)$','.$1'
$TimeStr
2023-01-16 08:00:0.000
▲ 0
'2023-01-16 08:00:00:000' -replace ':(?=\d{1,3}$)', '.'

2023-01-16 08:00:00.000