Я пробовал следующий способ, но не работает
dateTime = "2018-12-13T07:33:35.893Z"
DateTime dt;
DateTime.TryParseExact(dateTime, out dt);
Но я всегда получаю dt как {1/1/0001 12:00:00 AM}.
Подскажите, пожалуйста, почему? и как мне преобразовать эту строку на сегодняшний день?
Я также пробовал Convert.ToDateTime, но не работает.
На самом деле я хочу получить строку DateTime dd/MM/yyyy, чтобы я мог выполнить запрос к БД.
В качестве отступления: помните, что объект DateTime не имеет формата (он просто хранится как одно число). Если вам нужно форматирование, вам понадобится строка.
ты можешь предложить для Индии
@Mangesh Что значит «предложить Индии»?
@MangeshUkade Это дата ISO8601. Это единственный формат нет, на который влияют локали и часовые пояса - Z указывает UTC. Простые DateTime.Parse() или DateTimeOffset.Parse() просто работают. Нет причин использовать ParseExact. Что ты пытаешься сделать?
@MangeshUkade к тому же объекты DateTime и DateTimeOffset не имеют формата. Это бинарные объекты. Если вы хотите отображать их определенным образом, укажите нужную строку формата при преобразовании их в строки.





У вас есть оригинальный объект DateTime или он просто находится в string?
Если у вас есть DateTime:
string european = dateTime.ToString("dd/MM/yyyy");
Если у вас это строка:
string date = "2018-12-13T07:33:35.893Z";
if (DateTime.TryParse(date , out DateTime result))
result.ToString("dd/MM/yyyy");
Взгляните на исходный MSDN документация о методе DateTime.ToString
Поскольку у вас есть DateTime, вы можете преобразовать его в этот формат:
var thisExactMoment = DateTime.Now;
thisExactMoment.ToString("dd/MM/yyyy");
С вашей переменной "dateTime" просто выполните dateTime.ToString("dd/MM/yyyy"), и вы готовы к работе.
выдает ошибку для ответа socond if (DateTime.TryParse (date, out DateTime result)) result.ToString ("dd / MM / yyyy");
System.DateTime - это тип, но используется как variabe
@MangeshUkade Что тебе на самом деле нужно получить? Строка с таким dd / MM / yyyy?
я хочу передать эту строку в базу данных для фильтрации данных из БД
@MangeshUkade Я обновил свое решение примером использования «сейчас». Он получает системное время и преобразует его в строку dd/MM/yyyy. То же самое и с вашим DateTime.
DateTime.now работает нормально для меня, но я хочу "2018-12-13T07: 33: 35.893Z" это преобразование строки в DateTime, потому что этот формат я получил из файла angular для фильтрации от даты до даты
@MangeshUkade Мое второе дело - ваш путь. Он выполняет TryParse из этой строки, поэтому, если она пройдет, вы получите строку в желаемом формате. Если вы хотите что-то сделать с самим объектом DateTime, используйте переменную result внутри тела if.
var dateTime = "2018-12-13T07:33:35.893Z";
var x = DateTime.Parse(dateTime).ToString(@"MM/dd/yyyy");
дает мне строку ошибки, не признанную действительной DateTime
@MangeshUkade Эта строка даты взята из вопроса ваш.
да, та же строка даты, но появляется ошибка
@MangeshUkade Этот код делает работает для меня ...
но не работает для меня почему
@MangeshUkade Вы вставили мой код как есть - без изменений?
@JohnyL в чем смысл этого кода? OP пытается проанализировать дату, а не отформатировать строку. Если OP по ошибке не предполагает, что даты имеют форматы, и пытается проанализировать литерал даты в США, созданный ToString(). В любом случае ОП просил dd/MM, а не MM/dd
да, все нормально, наконец
Добро пожаловать в Stack Overflow. Этот код не компилируется -
TryParseExactне имеет перегрузки, принимающей только одну строку. Пожалуйста, опубликуйте фактический код, который вы используете. По сути, вам нужно указатьTryParseExactформат вашей строки - это та часть, которую вы нам не показали. Кроме того, вы должны использовать возвращаемое значениеTryParseExactдля обнаружения сбоя синтаксического анализа.