Разобрать строку (ггггммм) в формат DateTime? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть поле с именем Accounting Period как char, [AccountingPeriod] [char](6), как я могу проанализировать его в формате DateTime с помощью DatePicker?

Я использовал этот KendoGrid для DatePicker

@(
    Html.Kendo().DatePicker()
        .Name(nameof(InvoiceDTO.AccountingPeriod))
        .Format("{0:yyyyMM}")
        .HtmlAttributes(new { @class = "form-control", style = "width:50%" })
)

У меня есть дата: 199805

1 Ответ

1 голос
/ 19 апреля 2020

Хорошо, из комментариев я понял, что у вас есть дата в формате "ггггММ", и из этого вы хотите, чтобы волшебная строка кода создала вам объект типа DateTime. Вы можете сделать это, используя эту строку кода:

DateTime.TryParseExact("199805", "yyyyMM", CultureInfo.InvariantCulture, DateTimeStyles.None, out var theDate);

Не стесняйтесь изменять его в соответствии с вашими потребностями.

ОБНОВЛЕНИЕ:

Относительно Ваше присвоение даты Kendo DatePicker, я бы посоветовал вам создать метод и вызвать его внутри метода Value(). Нечто похожее на это:

@functions{ 
    public DateTime GetDate(string strDate)
    {
        if (DateTime.TryParseExact(strDate, "yyyyMM", CultureInfo.InvariantCulture, DateTimeStyles.None, out var theDate))
        {
            return theDate;
        }
        return DateTime.Now;
    }
}

И тогда вы можете просто вызвать его внутри метода Value(), как показано ниже:

@(
    Html.Kendo().DatePicker()
    .Name(nameof(InvoiceDTO.AccountingPeriod))
    .Value(GetDate(InvoiceDTO.AccountingPeriod)) // I assume AccountPeriod is of type string.
    // .Format("{0:yyyyMM}") I do not think we are going to need this after the date is parsed into the required type.
    .HtmlAttributes(new { @class = "form-control", style = "width:50%" })
)

PS: У меня есть не проверял код, просто огонь в воздухе после прохождения этой статьи . Так что, возможно, понадобится немного Любви.

...