C#日期时间格式转换
我在datetime的转换上有问题。我的日期字符串为C#日期时间格式转换,c#,datetime,C#,Datetime,我在datetime的转换上有问题。我的日期字符串为MM/dd/yyyy。现在我需要将其转换为yyyy-MM-dd 但我面临一些错误。请帮忙 public static DateTime ToDBDateTime(string _dateTime) { string sysFormat = "MM/dd/yyyy hh:mm:ss tt"; string _convertedDate = string.Empty; if (_dateTim
MM/dd/yyyy
。现在我需要将其转换为yyyy-MM-dd
但我面临一些错误。请帮忙
public static DateTime ToDBDateTime(string _dateTime)
{
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
string _convertedDate = string.Empty;
if (_dateTime != null || _dateTime != string.Empty)
{
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat, System.Globalization.CultureInfo.InvariantCulture).ToString(_toDBDateFormat);
//_convertedDate = Convert.ToDateTime(_dateTime).ToString(_toDBDateFormat);
/// Debug.Print(sysFormat);
}
return Convert.ToDateTime(_convertedDate);
}
我想知道是否有任何方法可以以各种格式传递datetime
,它将返回预期的格式
例如:如果我将日期传递为dd/MM/yyyy
或MM/dd/yyyy
,则上述函数将以yyyy-MM-dd
格式返回日期
请提供一些解决日期时间问题的建议。由于您有一个格式为“MM/dd/yyyy”的字符串中的日期,并希望将其转换为“yyyy-MM-dd”,您可以这样做:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
由于您有一个格式为“MM/dd/yyyy”的字符串中的日期,并且希望将其转换为“yyy-MM-dd”,您可以这样做:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
我试过这个,效果很好
DateTime date1 = new DateTime(2009, 8, 1);
date1.ToString("yyyy-MM-dd hh:mm:ss tt");
您可以在此ToString中应用任何格式
希望有帮助
米林我试过这个,效果很好
DateTime date1 = new DateTime(2009, 8, 1);
date1.ToString("yyyy-MM-dd hh:mm:ss tt");
您可以在此ToString中应用任何格式
希望有帮助
Milind使用内置的tostring,如下所示:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
使用内置的tostring,如下所示:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
我有一个日期字符串MM/dd/yyyy
对。。。但你却试图这样解析它:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
您需要提供一个与您的输入匹配的格式字符串-那么为什么要包含时间部分呢?你可能只是想:
string sysFormat = "MM/dd/yyyy";
然而,这并不是问题的结束。然后将该DateTime
转换回如下字符串:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
。。。并再次解析它:
return Convert.ToDateTime(_convertedDate);
你到底为什么要这么做?您应该尽可能避免字符串转换。除此之外,\u toDBDateFormat
(一个引起我怀疑的变量名)和Convert.ToDateTime
(总是使用当前区域性进行解析)将如何兼容
你应该:
- 计算出您希望如何处理给定的空字符串或null,然后只返回适当的
DateTime
- 否则,只需使用正确的格式进行解析
DateTime
只是一个日期和时间值。它没有内在的格式。设置格式时,可以指定要如何设置格式。但是,如果要将该值用于数据库查询,则无论如何都不应将其再次转换为字符串-应使用参数化SQL,并仅将其作为日期时间提供
我有一个日期字符串MM/dd/yyyy
对。。。但你却试图这样解析它:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
您需要提供一个与您的输入匹配的格式字符串-那么为什么要包含时间部分呢?你可能只是想:
string sysFormat = "MM/dd/yyyy";
然而,这并不是问题的结束。然后将该DateTime
转换回如下字符串:
DateTime dt = DateTime.ParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyy-MM-dd");
Convert.ToDateTime(_convertedDate).ToString("MM/dd/yyyy") or whatever format you want.
string sysFormat = "MM/dd/yyyy hh:mm:ss tt";
...
_convertedDate = DateTime.ParseExact(_dateTime, sysFormat,
CultureInfo.InvariantCulture)
.ToString(_toDBDateFormat)
。。。并再次解析它:
return Convert.ToDateTime(_convertedDate);
你到底为什么要这么做?您应该尽可能避免字符串转换。除此之外,\u toDBDateFormat
(一个引起我怀疑的变量名)和Convert.ToDateTime
(总是使用当前区域性进行解析)将如何兼容
你应该:
- 计算出您希望如何处理给定的空字符串或null,然后只返回适当的
DateTime
- 否则,只需使用正确的格式进行解析
你问题的这一部分也与我有关:
例如:如果我将日期传递为dd/MM/yyyy或MM/dd/yyyy,则上述函数将以yyyy-MM-dd格式返回日期
没有“格式为yyyy-MM-dd的日期”这样的东西。DateTime
只是一个日期和时间值。它没有内在的格式。设置格式时,可以指定要如何设置格式。但是,如果要将该值用于数据库查询,则无论如何都不应将其再次转换为字符串-应使用参数化SQL,并将其作为日期时间提供给我们显示要分析的日期?日期时间对象没有格式,例如,它们是二进制对象,请看这个,你应该给出一些上下文:你为什么要使用这个函数?为什么输入是字符串格式?此外,您的函数名为ToDBDateTime
,因此您似乎希望使用结果插入数据库。不需要将DateTime对象转换为字符串
;请改用参数化sql。@jeroenh:Spot on:)我希望有什么方法可以禁止sql中的文字值……告诉我们您正在解析的日期?DateTime对象没有格式,如果它们是二进制对象,请看一下这个。您应该给出一些上下文:为什么要使用这个函数?为什么输入是字符串格式?此外,您的函数名为ToDBDateTime
,因此您似乎希望使用结果插入数据库。不需要将DateTime对象转换为字符串
;请改用参数化sql。@jeroenh:Spot on:)我希望有某种方法可以禁止sql中的文字值……输入和输出格式都不像您所描述的那样-我认为这也忽略了OP假设中的一些更基本的问题。很抱歉,我的格式不好,但是,先生,你能解释一下它忽略了哪些基本问题吗?我对c语言非常陌生,输入和输出格式都不像你所描述的那样-我认为这也忽略了OP的假设中的一些更基本的问题。对不起,我对这些格式不满意,但是先生,你能解释一下它忽略了哪些基本问题吗,我在c#是的。。但我明白了