如何将日期字符串转换为特定的日期格式?

时间:2013-03-11 05:12:21

标签: asp.net c#-4.0

我从数据库获取日期字符串值(3/13/2013 12:00:00 AM),我需要像这种格式(yyyy-mm-dd)进行转换。请帮我解决这个问题。

string targetdate = "3/13/2013 12:00:00AM";(getting date value from DB)
DateTime lastdate = DateTime.ParseExact(targetdate, "yyyy-mm-dd", 
                  System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat);

我试过

Iformatprovider = null. 

但我得到相同的错误“字符串未被识别为有效的DateTime

3 个答案:

答案 0 :(得分:1)

首先,您需要使用格式DateTime将日期字符串转换为"M/d/yyyy HH:mm:sstt"类型对象,之后您可以使用"yyyy-MM-dd"获取格式化字符串。 (您在月份中使用小写m,月份应为大写M

string targetdate = "3/13/2013 12:00:00AM";
DateTime lastdate = DateTime.ParseExact(targetdate, 
                       "M/d/yyyy hh:mm:sstt", 
                       System.Globalization.CultureInfo.InvariantCulture);

string newFormat = lastdate.ToString("yyyy-MM-dd");

newFormat将包含"2013-03-13"

答案 1 :(得分:1)

我认为问题在于日期时间

"3/13/2013 12:00:00AM"

不应该是凌晨12:00:00。

应该是12:00:00 PM。

实施例

  string targetdate = "3/13/2013 11:59:59AM";
  DateTime lastdate = DateTime.ParseExact(targetdate,
                               "M/d/yyyy HH:mm:sstt",
                               System.Globalization.CultureInfo.InvariantCulture);

  lastdate=lastdate.AddSeconds(1);

你会得到

  3/13/2013 12:00:00 AM

我建议你把它放在数据库的末尾。

如果您使用的是sql server,那么

实施例

以下脚本使用CONVERT()函数显示不同的格式。我们将使用GETDATE()函数来获取当前日期/时间:

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),10)
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),6)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

结果看起来像这样:

Nov 04 2011 11:45 PM
11-04-11
11-04-2011
04 Nov 11
04 Nov 2011
04 Nov 2011 11:45:34:243 

答案 2 :(得分:1)

如果您知道自己的日期时间格式以及转换后的格式,那么.Net中的日期时间转换非常简单。 这是一个例子。

    String origionalDate = "12/20/2013"; // Format : MM/dd/yyyy
    string origionalFormat = "MM/dd/yyyy";
    string convertInToFormat="dd/MM/yyyy";
    String convertedDate;
    DateTime objDT;

    if (DateTime.TryParseExact(origionalDate, origionalFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out objDT) == true)
    {
        convertedDate = objDT.ToString(convertInToFormat);
        Response.Write("<b>Origional DateTime Format ( " + origionalFormat + " ) : </b>" + origionalDate);
        Response.Write("<br/>");
        Response.Write("<b>Converted DateTime Format ( " + convertInToFormat + " )  : </b>" + convertedDate);
    }
    else
    {
        Response.Write("<b>Not able to parse datetime.</b>");
    }

有关此更多详细信息,请访问此链接。的 Click Here...