Как ввести переменные даты и времени с клавиатуры в C # - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужно ввести с клавиатуры данные в соответствии с форматом даты / месяца / года.

Я пытаюсь код, подобный этому:

   DateTime dt = new DateTime();
   dt = DateTime.Parse(Console.ReadLine());

Но при вводе даты я все же сначала вводю год.Так как я могу это исправить.Спасибо!

Ответы [ 4 ]

1 голос
/ 26 сентября 2019

Для начала вам нужно импортировать

using System.Globalization;

в заголовок вашего кода, чтобы он работал, после того, как вы просто добавили этот код

DateTime dt;
dt = DateTime.Parse (Console.ReadLine ());
Console.WriteLine (dt.ToString ("d"
    CultureInfo.CreateSpecificCulture ("NZ-in")));
Console.ReadLine ();

Для получения дополнительной информации посетитеэта веб-страница

https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings
1 голос
/ 25 сентября 2019

Не забывайте, что форматы даты во всем мире разные.Великобритания использует день / месяц / год, США использует месяц / день / год, а Китай использует год / месяц / день.Кроме того, разделитель также может быть другим (некоторые используют косую черту, некоторые культуры используют тире и т. Д.).

DateTime.Parse будет использовать культуру, обнаруженную при запуске из O / S.Если вы хотите переопределить это, вы должны использовать DateTime.ParseExact (где вы указываете точный шаблон) или передать DateTime.Parse ту культуру, которую вы хотите использовать.

1 голос
/ 25 сентября 2019

Можете ли вы показать мне свой метод Main в Program.cs?Я задаюсь вопросом, может ли помочь маркировка readline дословным строковым литералом.Также вам, вероятно, следует использовать TryParse, чтобы вы могли справиться.

if (!DateTime.TryParse($@"{Console.ReadLine()}", out DateTime result))
{
    throw new FormatException("The Date you entered is not a valid date");
}

Console.WriteLine($"{result.ToString("yyyy/MM/dd")}");
0 голосов
/ 25 сентября 2019

Вы можете посмотреть на dotnetfiddle моего решения здесь .

Если вы посмотрите на конструктор DateTime doc , вы увидите, что конструктор принимаетint year, int month, int day в том порядке, который не соответствует целевому формату OP.Посмотрите на мой ответ, чтобы найти простое решение.

Вы также можете найти код ниже:

string targetDateFormat = "dd/MM/yyyy";
DateTime dt;

Console.WriteLine("Enter a date in the format day/month/year");
string enteredDateString = Console.ReadLine();

//This is assuming the string entered is of the correct format, I suggest doing some validation
dt = DateTime.ParseExact(enteredDateString, targetDateFormat,CultureInfo.InvariantCulture);

//This will print in month/day/year format
Console.WriteLine(dt);

//This will print in day/month/year format
Console.WriteLine(dt.ToString("dd/MM/yyyy"));

Вам необходимо добавить следующее, используя объявления в свой код:

using System.Globalization;

...