Замена двоеточие на точку в строке метки времени
Имеется строковый массив с метками времени в формате "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". Подскажите, пожалуйста, как сделать правильно?
Ответы (2 шт):
Автор решения: Алексей Р
→ Ссылка
Один из вариантов - найти последнее двоеточие, вырезать подстроки слева и справа и соединить их через точку
$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
Автор решения: Алексей Семенов
→ Ссылка
'2023-01-16 08:00:00:000' -replace ':(?=\d{1,3}$)', '.'
2023-01-16 08:00:00.000