我在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 AM
到10:30 AM
的范围。这很好,但我还需要在PM中写回DB时间。
如何使用上面的语法在下午显示DateTime
,例如下午1:00到1:30?
我注意到日历控件具有TimeOfDay
功能,但在使用Google搜索以及在MonthCalendar.SelectionRange.Start.AddHours
下搜索之后,我无法在此处找到任何内容。也搜索了SOF,但没有得到任何答案。
答案 0 :(得分:0)
让我试着澄清一些事情;
DateTime
或1:00 PM
等1:30 PM
个实例。 Datetime
实例没有任何隐式格式。它只有日期和时间值。当您获得文本(字符串)表示时,格式化概念仅适用。这就是为什么你可以拥有字符串变量的原因。DateTime
值作为字符串保存到数据库中通常一个坏主意。一般来说,您应该将DateTime
值而不是字符串保存到数据库中,并在UI中显示它们时生成字符串表示。
如何根据DateTime值获取这些格式?
简单。首先,您将13
和13,5
(相当于13小时30分钟)小时添加到Start
和End
,并将.ToString()
method与h:mm tt
一起使用自定义格式作为第一个参数,以及在AMDesignator
和PMDesignator
中使用AM
和PM
并且GregorianCalendar
为Calendar
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
作为字符串变量。