如何让MonthCalendar控件在PM中显示DateTime?

时间:2016-02-04 01:50:48

标签: c# datetime monthcalendar

我在C#应用程序中使用MonthCalendar控件并希望在下午显示DateTime,即PM

我可以通过创建2-DateTime变量,即DateTime start,成功地让它在AM 中返回DateTime ;和DateTime结束;

如果我像这样分配这些变量:

start = MonthCalendar.SelectionRange.Start.AddHours(10);
end = MonthCalendar.SelectionRange.End.AddHours(10).AddMinutes(30);

然后我可以设置从10:00 AM10:30 AM的范围。这很好,但我还需要在PM中写回DB时间。

如何使用上面的语法在下午显示DateTime,例如下午1:00到1:30?

我注意到日历控件具有TimeOfDay功能,但在使用Google搜索以及在MonthCalendar.SelectionRange.Start.AddHours下搜索之后,我无法在此处找到任何内容。也搜索了SOF,但没有得到任何答案。

1 个答案:

答案 0 :(得分:0)

让我试着澄清一些事情;

  • 无法拥有DateTime1:00 PM1:30 PM个实例。 Datetime实例没有任何隐式格式。它只有日期和时间值。当您获得文本(字符串)表示时,格式化概念适用。这就是为什么你可以拥有字符串变量的原因。
  • DateTime值作为字符串保存到数据库中通常一个坏主意。一般来说,您应该将DateTime值而不是字符串保存到数据库中,并在UI中显示它们时生成字符串表示。

  

如何根据DateTime值获取这些格式?

简单。首先,您将1313,5(相当于13小时30分钟)小时添加到StartEnd,并将.ToString() methodh:mm tt一起使用自定义格式作为第一个参数,以及在AMDesignatorPMDesignator中使用AMPM并且GregorianCalendarCalendar property的文化{ {3}}作为第二个参数。

string startStr = MonthCalendar.SelectionRange.Start.AddHours(13)
                               .ToString("h:mm tt", CultureInfo.InvariantCulture);
string endStr = MonthCalendar.SelectionRange.End.AddHours(13,5)
                               .ToString("h:mm tt", CultureInfo.InvariantCulture);

现在您将1:00 PM amd 1:30 PM作为字符串变量。