Как получить исправленную ошибку, связанную с анализом объекта DateTime? - PullRequest
0 голосов
/ 29 октября 2018

Я получаю эту ошибку, связанную с тем, что Datetime не распознается. Из-за боязни еще больше запутаться, мне трудно разобраться в этом. Я ценю, кто-то говорит мне, как я могу это исправить?

Я получаю эту ошибку при запуске программы:

[FormatException: строка не была распознана как действительный DateTime.] System.DateTimeParse.Parse (String s, DateTimeFormatInfo dtfi, стили DateTimeStyles) +12614002 System.DateTime.Parse (String s) + 25

public ActionResult Create(QuizFormViewModel viewModel) 
{
    var quiz = new Quiz
                {
                    StudentId= User.Identity.GetUserId(),
                    DateTime = DateTime.Parse(
                                string.Format($"{viewModel.Date} {viewModel.Time}"))
                };

    _context.Guizzes.Add(quiz);
    _context.SaveChanges();
}

Edit:

Здесь дата и время в ViewModel.

    public string Date { get; set; }

    public string Time { get; set; }

и в моем файле cshtml у меня есть этот код:

    <div class="form-group">
    @Html.LabelFor(m => m.Date)
    @Html.TextBoxFor(m => m.Date, new { @class = "form-control", placeholder = "1 Jan 2019" })
</div>

<div class="form-group">
    @Html.LabelFor(m => m.Time)
    @Html.TextBoxFor(m => m.Time, new { @class = "form-control", placeholder = "24:00" })
</div>

1 Ответ

0 голосов
/ 29 октября 2018

То, как должно быть написано любое заданное число или DateTime, сильно зависит от культуры. По умолчанию Parse (который вызывается TryParse и Convert) извлекает текущую культуру из настроек пользователя Windows. Я не уверен, где в этом процессе задается спецификация строки формата. Но вы делаете WebApplicaiton, и обычно существует разрыв между культурой пользователей и культурой вашего сервера.

Большая проблема, кажется, в том, что вы разбили его на части и превратили в строки. Время без даты и часового пояса (даже если оно подразумевается) в значительной степени бесполезно в тот момент, когда ваша программа может пересечь даже единственную границу часового пояса. И строка - только второй худший формат хранения и передачи. Это тот тип, который вы должны выбрать в некоторых случаях (User I / O, XML), но хотите избежать везде. ASP.Net имеет существующие элементы выбора даты и времени. И любая СУБД, которая стоит своей памяти, также будет иметь тип DateTime.

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