执行突出显示的行后,以下操作失败。
字符串未被识别为有效的DateTime。
它突然发生,在12点左右工作......?现在是下午4:54而且没有去。到底是怎么回事?
答案 0 :(得分:7)
你应该使用hh:mm:ss tt
作为格式字符串 - HH
用于24小时制,此时你说它是凌晨4点......但是PM作为AM / PM指。
基本上,hh
与tt
或HH
一起使用。
使用Noda Time,您可以使用:
private static readonly LocalTimePattern TimePattern =
LocalTimePattern.CreateWithInvariantCulture("hh:mm:ss tt");
// TODO: Check this is what you want! We can't tell from your example.
private static readonly LocalDatePattern DatePattern =
LocalDatePattern.CreateWithInvariantCulture("dd/MM/yyyy");
private static readonly LocalDateTimePattern DateTimePattern =
LocalDatePattern.CreateWithInvariantCulture("yyyy-MM-dd HH:mm:ss");
public static string GetMergedDateTime(string dateText, string timeText)
{
// The Value property throws an exception if parsing failed. You can
// check that with the Success property first though.
LocalDate date = DatePattern.Parse(dateText).Value;
LocalTime time = TimePattern.Parse(timeText).Value;
LocalDateTime dateTime = date + time;
return DateTimePattern.Format(dateTime);
}
请注意,返回LocalDateTime
可能更干净 - 在“自然”表示中尽可能多地完成工作,只在必要时使用字符串。