我在应用程序中自定义 DateTimePicker 值时遇到了问题。我已经阅读了所有有关可用于自定义日期/时间解释方式的各种格式字符串的信息。问题是我实际上希望在自定义格式字符串中忽略一些文本,以便我可以将季节作为字符串添加到 DateTimePicker 的开头。
例如,假设今天的日期是 2013 年 8 月 7 日下午 5:30(在美国)。如果我使用自定义格式字符串“MMM.d -h:mm tt”,那么日期将显示为 8 月 7 日 - 下午 5:30。所以,这很完美。只是,我想将季节添加到字符串的开头。因此,在这种情况下,它将是“ Summer: Aug. 7th - 5:30PM ”。
我遇到的问题是,如果我在自定义格式字符串的开头插入单词“Summer”,那么它实际上会将双 mm 解释为 dateTime 的 GetMinute 值。我希望季节保持字面意思,但要解释格式字符串的其余部分(如果有意义的话)。
这是我正在使用的代码:
public Form1()
{
InitializeComponent();
dateTimePicker1.Format = DateTimePickerFormat.Custom;
season = getSeason(dateTimePicker1.Value);
dateTimePicker1.CustomFormat = convertSeason(season) + " : " + dt_format;
}
public int season = 1; //set default to summer
public string dt_format = "MMM.d -h:mm tt";
private int getSeason(DateTime date)
{
float value = (float)date.Month + date.Day / 100; // <month>.<day(2 digit)>
if (value < 3.21 || value >= 12.22) return 3; // Winter
if (value < 6.21) return 0; // Spring
if (value < 9.23) return 1; // Summer
return 2; // Autumn
}
private string convertSeason(int value)
{
string season = "Spring";
if (value == 1) season = "Summer";
else if (value == 2) season = "Autumn";
else if (value == 3) season = "Winter";
return season;
}
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
season = getSeason(dateTimePicker1.Value);
dateTimePicker1.CustomFormat = convertSeason(season) + " : " + dt_format;
}