C# 季节的日期时间自定义格式

C# 季节的日期时间自定义格式,c#,C#,我在应用程序中自定义DateTimePicker值时遇到了一个问题。我已经阅读了有关各种格式字符串的所有内容,您可以使用这些字符串自定义日期/时间的解释方式。问题是,我实际上希望在自定义格式字符串中忽略一些文本,以便我可以将季节作为字符串添加到DateTimePicker的开头 例如,让我们以今天的日期为例,即2013年8月7日下午5:30(在美国)。如果我使用自定义格式字符串“MMM.d-h:mmtt”,那么日期将显示为8月7日-5:30PM。那太好了。只是,我想把季节添加到字符串的开头。因此

我在应用程序中自定义DateTimePicker值时遇到了一个问题。我已经阅读了有关各种格式字符串的所有内容,您可以使用这些字符串自定义日期/时间的解释方式。问题是,我实际上希望在自定义格式字符串中忽略一些文本,以便我可以将季节作为字符串添加到DateTimePicker的开头

例如,让我们以今天的日期为例,即2013年8月7日下午5:30(在美国)。如果我使用自定义格式字符串“MMM.d-h:mmtt”,那么日期将显示为8月7日-5:30PM。那太好了。只是,我想把季节添加到字符串的开头。因此,在这种情况下,它将是“夏季:8月7日-下午5:30”

我遇到的问题是,如果我在自定义格式字符串的开头插入单词“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;
}
public Form1()
{
初始化组件();
dateTimePicker1.Format=DateTimePickerPerformat.Custom;
季节=获取季节(dateTimePicker1.Value);
dateTimePicker1.CustomFormat=convertSeason(season)+“:”+dt_格式;
}
公共交通流量=1//将默认设置为summer
公共字符串dt_format=“MMM.d-h:mm tt”;
private int getSeason(日期时间日期)
{
浮动值=(浮动)date.Month+date.Day/100;//。
如果(值<3.21 | |值>=12.22)返回3;//冬季
if(值<6.21)返回0;//弹簧
if(值<9.23)返回1;//Summer
返回2;//秋天
}
私有字符串(int值)
{
弦季节=“春天”;
如果(值==1)季节=“夏季”;
如果(值==2)季节=“秋季”;
如果(值==3)季节=“冬季”;
回归季节;
}
私有无效dateTimePicker1\u值已更改(对象发送方,事件参数e)
{
季节=获取季节(dateTimePicker1.Value);
dateTimePicker1.CustomFormat=convertSeason(season)+“:”+dt_格式;
}

您需要用文字字符串分隔符将其包围起来(对于
DateTime
格式字符串):

所以现在你的方法可以是:

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 int GetSeason(DateTime date)
{
    //using decimal to avoid any inaccuracy issues
    decimal value = date.Month + date.Day / 100M;   // <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)
{
    switch (value)
    {
        case 0:
            return "'Spring'";
        case 1:
            return "'Summer'";
        case 2:
            return "'Autumn'";
        case 3:
            return "'Winter'";
    }
    return "";
}
private int getseasure(日期时间日期)
{
//使用十进制避免任何不准确的问题
十进制值=日期.月份+日期.天/100M;//。
如果(值<3.21 | |值>=12.22)返回3;//冬季
if(值<6.21)返回0;//弹簧
if(值<9.23)返回1;//Summer
返回2;//秋天
}
私有字符串(int值)
{
开关(值)
{
案例0:
返回“弹簧”;
案例1:
返回“夏天”;
案例2:
返回“秋天”;
案例3:
返回“冬天”;
}
返回“”;
}

您需要用文字字符串分隔符将其包围起来(对于
DateTime
格式字符串):

所以现在你的方法可以是:

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 int GetSeason(DateTime date)
{
    //using decimal to avoid any inaccuracy issues
    decimal value = date.Month + date.Day / 100M;   // <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)
{
    switch (value)
    {
        case 0:
            return "'Spring'";
        case 1:
            return "'Summer'";
        case 2:
            return "'Autumn'";
        case 3:
            return "'Winter'";
    }
    return "";
}
private int getseasure(日期时间日期)
{
//使用十进制避免任何不准确的问题
十进制值=日期.月份+日期.天/100M;//。
如果(值<3.21 | |值>=12.22)返回3;//冬季
if(值<6.21)返回0;//弹簧
if(值<9.23)返回1;//Summer
返回2;//秋天
}
私有字符串(int值)
{
开关(值)
{
案例0:
返回“弹簧”;
案例1:
返回“夏天”;
案例2:
返回“秋天”;
案例3:
返回“冬天”;
}
返回“”;
}

在获得日期时间格式字符串后,为什么不能追加季节字符串?将每个ConvertSeason编辑为:string season=“'Spring'”@ManishMishra,因为它是日期时间选择器?在获得日期时间格式字符串后,为什么不能追加季节字符串?将每个ConvertSeason编辑为:string season=“'Spring'”@ManishMishra,因为它是一个日期时间选择器?格式答案是正确的。但是,ConvertSeason方法不会编译,因为不是所有的代码路径都会返回值。格式答案是正确的。但是,ConvertSeason方法不会编译,因为不是所有的代码路径都会返回值。