c# ASP.净日期格式

本文关键字:格式 日期 ASP | 更新日期: 2023-09-27 18:03:16

我有一个数据库,它显示日期为dd/mm/yyyy在我的列表视图中,我已经改变了它,所以它显示为mm/dd/yyyy

<asp:Label ID="TPTIMEIN" runat="Server" Text='<%#Eval("TPTIMEIN", "{0: MM/dd/yyyy HH:mm:ss}") %>' />

我还有另一部分代码,如果日期超过2小时,则将字体颜色更改为红色

Label TimeLabel = (Label)e.Item.FindControl("TPTIMEIN");
            if (TimeLabel != null)
            {
                DateTime Total;
                if (DateTime.TryParse(TimeLabel.Text, out Total) == true)
                {
                    if (Total < DateTime.Now.AddHours(-2))
                    {
                        TimeLabel.ForeColor = System.Drawing.Color.Red;                          
                    }
                }
            }

然而,这里有一个问题,上面的代码似乎只适用于旧格式dd/mm/yyyy。所以它会突出显示01/11/yyyy,而不是01/14/yyyy,因为它不识别它。我该如何改变这一切?

希望这是有意义的.....

编辑

我试过这样做,但我不能这样使用"<"

if (Total < DateTime.Now.AddHours(-2).ToString("MM.dd.yyyy"))

c# ASP.净日期格式

既然你已经知道你想要使用的格式,你可以只使用DateTime。TryParseExact。

改变
 if (DateTime.TryParse(TimeLabel.Text, out Total) == true)

if(DateTime.TryParseExact(TimeLabel.Text,"MM/dd/yyyy HH:mm:ss",null, DateTimeStyles.None, out Total) == true)

可以使用DateTime。TryParseExact并提供您更改为的日期格式。假设你改变了应用中其他地方的格式。

的例子:

   DateTime parsedDateValue;
    string date = "05/14/2014";
    DateTime.TryParseExact(date, "MM/dd/yyyy", Thread.CurrentThread.CurrentCulture, System.Globalization.DateTimeStyles.None, out parsedDateValue);
    Console.WriteLine(parsedDateValue.ToShortDateString());
//prints 5/14/2014

如果您的系统日期格式是dd/mm/yyyy, TryParse将尝试将您的字符串转换为这种格式。

如果您有01/14/yyyy,根据您的系统时间是无效的,Total将不会初始化为您正在解析的日期。相反,它将初始化为默认日期时间。

请在所有地方使用一致的日期格式。"dd/mm/yyyy"或"mm/dd/yyyy"