Преобразовать дату и время в строку с именем месяца и датой возврата - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу преобразовать дату (frensh) следующим образом: 25/02/2019 => 25 Фев 2019 Я могу сделать это со строковым значением:

date.ToString("dd MMM yyyy");

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

Я пробовал это:

var formats = new[] { "dd MMM yyyy" }; 
var date = DateTime.ParseExact("25/02/2019", DateFormat,
                         System.Globalization.CultureInfo.CurrentCulture,
                         System.Globalization.DateTimeStyles.AssumeLocal);

, но я получаю ошибку

"Строка не была распознанакак действительный DateTime? "

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Наконец, я нахожу решение по предложению @Rufus L, я сохранил значение как Datatime, затем изменил LabelStyle

AxisY.LabelStyle.Format="{0:dd MMM yyyy}"

, и я получил свою диаграмму Ганта, спасибоочень

enter image description here

0 голосов
/ 25 февраля 2019

Это основной вопрос, который новые разработчики не узнали о разнице между DateTime и его текстовым представлением (он же string).Не волнуйтесь, у всех нас была одна и та же проблема.

A DateTime не имеет любого формата.У него просто есть значения даты и времени.И он вычисляется как long, называемое Ticks.

С другой стороны, то, что вы хотите, то есть 25 Fév 2019, представляет собой текстовое представление из этого, что означает, что это string.Вы не можете иметь «25 Фев 2019» как DateTime, но вы можете иметь его как string.

Допустим, у вас есть "25/02/2019" как string, и вы хотитеразобрать его до DateTime.В таком случае вы можете использовать DateTime.ParseExact, как вы это сделали.

DateTime myDateTime = DateTime.ParseExact("25/02/2019", "dd/MM/yyyy", 
                               CultureInfo.InvariantCulture);

Теперь у вас есть DateTime, и вы можете получить его текстовое (он же строка) представление с.ToString() метод и французская (fr-FR) культура.

string myString = myDateTime.ToString("dd MMM yyyy", new CultureInfo("fr-FR"));

Кстати, в fr-FR культуре сокращенное название месяца févr., а не Fév.Насколько я вижу, ни одна из fr, fr-FR или fr-CA не имеет этой строки.Чтобы получить то, что вы хотите, вы должны удалить последние 2 символа и сделать первый символ заглавным.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...