字符串到C#中的DateTime转换

6 c#

愚蠢的问题,但无法解决它...我有一个这种格式的字符串20081119

我有一个C#方法将字符串转换为DateTime以输入SQL Server数据库

public static DateTime MyDateConversion(string dateAsString)
    {

        return System.DateTime.ParseExact(dateAsString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);

    }
Run Code Online (Sandbox Code Playgroud)

问题是日期是这样的:Date = 19/11/2008 12:00:00 AM我需要它是yyyyMMdd类型的DateTime,因为我将它映射到一个模式来调用存储过程.

先谢谢你们.

干杯,Con

Mar*_*ell 14

没有"yyyyMMdd类型的DateTime"这样的东西; DateTime只是一个大整数,表示一个纪元中的时间量 - 它没有格式.但这很好,因为你应该使用参数化的TSQL - 所以只需添加DateTime作为DbParameter的值,它将以明确的方式传递给db(不要使用字符串连接来构建TSQL命令) ):

DbParameter param = cmd.CreateParameter();
param.ParameterName = "@foo";
param.DbType = DbType.DateTime;
param.Value = yourDateTime; // the DateTime returned from .ParseExact
cmd.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)

或者SqlCommand:

cmd.Parameters.Add("@foo", SqlDbType.DateTime).Value = yourDateTime;
Run Code Online (Sandbox Code Playgroud)

如果你真的需要一个字符串,那么只需将字符串直接用作[n] [var] char参数.

另外 - 在这种情况下,要解析日期我将使用不变文化(因为文化不具有格式):

DateTime yourDateTime =
            DateTime.ParseExact(dateString, "yyyyMMdd", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

从对话中,似乎您可能还需要从DateTime转到字符串,在这种情况下只需将其反转:

string dateString = yourDateTime.ToString("yyyyMMdd", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

  • 实际上,我应该提到为 utc 偏移保留了一些位 - 但*主要*它只是一个大整数;-p (2认同)

joh*_*hnc 1

Date Time 类默认将其 ToString 格式设置为 19/11/2008 12:00:00 AM

这是来自MSDN 的内容,可能对你有帮助

由于日期和时间值的出现取决于文化、国际标准、应用程序要求和个人偏好等因素,因此 DateTime 结构通过重载其 ToString 方法,在格式化日期和时间值方面提供了很大的灵活性。默认 DateTime.ToString() 方法使用当前区域性的短日期和长时间模式返回日期和时间值的字符串表示形式。以下示例使用默认的 DateTime.ToString() 方法,使用 en-US 区域性(运行示例的计算机上的当前区域性)的短日期和长时间模式来显示日期和时间。

因此,您可以将 DateTime 上的 ToString 重载为所需的格式,否则将字符串表示形式直接传递给存储过程