Sheraz M Ответов: 3

Нужно изменить дату время только с датой


У меня есть переменная строкового типа, имеющая значение даты и времени "19/05/18 06:20:40"
теперь я хочу изменить это только на дату типа "19/05/18"

Что я уже пробовал:

попробовать это
Формат(inDate, "dd/MM/yy")
но это не работает для меня

3 Ответов

Рейтинг:
12

Ralf Meier

Когда у вас есть строка, вы должны использовать строковые функции для ее обработки. В вашем случае подстрока может решить эту проблему ...

OutString = inDate.SubString(0,8)

Функция Format-Function будет работать только (например, опубликованная вами), если ваша исходная переменная имеет тип даты ...


Maciej Los

Он делает свою работу, но я не являюсь последователем этого метода.
4.

Ralf Meier

Спасибо за Ваш голос ... :)

Рейтинг:
1

Maciej Los

Если вы хотите отобразить дату в определенном формате, пожалуйста, прочтите это:
Стандартные строки формата даты и времени | Microsoft Docs[^]
Пользовательский Числовой Формат Строк | Майкрософт Документы[^]

Так, значение datetime.Метод toString()[^] должен делать свою работу:

Dim stringdate = "19/05/18 06:20:40"
Dim provider As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture
Dim mydate = DateTime.ParseExact(stringdate, "dd/MM/yy HH:mm:ss", provider)
Dim formatdate = mydate.Tostring("dd/MM/yy")
'prints 19-05-18 in Poland
'prints 19.05.18 in Germany
'prints 19/05/18 in USA


Как видите, формат даты зависит от системных настроек. В случае если разделитель дат отличается то "/", то вы должны использовать значение datetime.Метод ToString (String, IFormatProvider) (System)[^]
Dim formatdate1 = mydate.Tostring("dd/MM/yy", New Globalization.CultureInfo("en-US"))


Ralf Meier

Это может быть лучшим (гораздо более универсальным) способом ... +5 от меня !!!

Maciej Los

Спасибо, Ральф.

Рейтинг:
1

RickZeeland

Альтернативой решению Ralfs может быть:

dim inDate as string = "19/05/18 06:20:40"
Console.WriteLine(inDate.Split(New Char() {" "c})(0))
Это также будет работать правильно, если длина части даты изменяется.