【问题标题】:Convert String to shortdate time将字符串转换为短日期时间
【发布时间】:2015-09-03 23:14:33
【问题描述】:

我有以下代码。我想要做的是,如果它是日期返回 NULL 的空值,或者返回短日期。示例:2015 年 12 月 12 日。我收到一个错误:

将字符串转换为 DateTime 时,在将每个变量放入 DateTime 对象之前解析字符串以获取日期。

public DateTime? StrToDate(string val)
{      
    DateTime? dt = string.IsNullOrEmpty(val) 
        ? (DateTime?)null 
        : DateTime.ParseExact(val, "MM/dd/yyyy", null);    
    return dt;
}

【问题讨论】:

  • 你传递给函数的字符串是什么?
  • 首先,你到底是从哪里得到这个错误的?这不是我见过的错误。其次,您传递的是 2 位数字,但 parse 方法显式查找 4。

标签: c# asp.net


【解决方案1】:

一个更有希望的解决方案是使用TryParseExact()。 TryParseExact 或 ParseExact 的情况也是它只接受提供的字符串格式以将其解析为 DateTime。

    public static DateTime? StrToDate(string val)
    {
        CultureInfo enUS = new CultureInfo("en-US");
        DateTime dateValue;
        if (DateTime.TryParseExact(val, "MM/dd/yyyy", enUS,
                                   DateTimeStyles.AllowWhiteSpaces, out dateValue))
        {
            return (dateValue);
        }
        else
        {
            return null;
        }
    }

现在测试用例会是这样的:

        // Valid date
        var date = StrToDate("05/01/2000");

        // Null
        var nulldateFromEmpty = StrToDate(string.Empty);

        // Null
        var nullDateFromNullString = StrToDate(null);

更新: 如果您希望准确返回“12/12/15”,则 DateTime 对象表示具有所有日期和时间字段的结构,因此即使该值是从 ShortDateTime 解析的string(12/12/15) 对象仍将具有时间的默认值,即“12:00:00 AM”。要转换这些值,您可以再次调用 var date = StrToDate("05/01/2015").Value.ToString("MM/dd/yy");

【讨论】:

    【解决方案2】:

    试试这个:

    var datetime = Convert.ToDateTime("1992 年 11 月 25 日");

    返回日期时间.ToShortDateString();

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 1970-01-01
      • 2022-08-18
      • 2017-08-31
      相关资源
      最近更新 更多