将字符串转换为特定的DateTime格式

时间:2010-07-30 17:13:18

标签: c# asp.net

我一直在谷歌上搜索一段时间,因为我的生活似乎无法找到解决方案。我认为这很容易但是花了太长时间才转向stackoverflow。

我需要将包含日期和时间的字符串转换为DateTime变量。我已经将字符串格式化为我想要存储的确切格式但是当我将其转换为DateTime时,它会不断添加我不想要的秒数。我希望它存储为01/01/2010 09:00 AM。这是我到目前为止使用的代码:

DateTime.ParseExact(startTime,"MM/dd/yyyy hh:mmtt", null);

..但它会不断追加秒。请指教。

5 个答案:

答案 0 :(得分:8)

如果它存储为DateTime数据类型,则存储正确,但您的UI 显示错误。无论您如何设置值,DateTime数据类型始终具有秒(毫秒等)。问题在于如何将其显示回用户。

您需要在显示时以正确的字符串格式显示所需的日期,如

Label1.Text = startTime.ToString("MM/dd/yyyy hh:mmtt");

修改 - 添加

要在GridView中对其进行格式化,请参阅此处: http://peterkellner.net/2006/05/24/how-to-set-a-date-format-in-gridview-using-aspnet-20using-htmlencode-property/

答案 1 :(得分:3)

我认为,当你说它增加秒数时,你的意思是当你试图读它时它也在读秒,你想要做类似的事情

DateTime parsedDateTime = DateTime.ParseExact(startTime, "MM/DD/YYYY hh:mmtt", null);
string dateTime = parseDateTime.ToString("MM/DD/YYY hh:mmtt");

DateTime类总是有秒,毫秒和纳秒我认为存储在其中。总是,无论你是否填写它,它都假设,尽管你只需要格式化你如何从DateTime对象读取信息,使它不会给你你没有填写或没有使用的DateTime数据片段

如果您将其存储在数据库中,请了解数据库还将存储所有这些信息,无论您是否将其提供给它。有一些不同的SQL DateTime类型,如SmallDate等,它们存储不同数量的DateTime数据,不知道是否有一个存储到小时而不是秒,但是使用SQL,您还可以格式化您选择数据的方式out,或者只是将它作为C#DateTime对象选择到C#中,然后当你再次表示它时,格式化ToString(),使它不显示你不想要的数据。

答案 2 :(得分:1)

试试这个。

    DateTime dt;
    if (DateTime.TryParse(startTime, out dt))
    {
        string newDateTime = dt.ToString("MM/dd/yyyy hh:mmtt");
    }

答案 3 :(得分:0)

如果您有字符串,则必须首先保证它确实可以转换为日期时间 首先,这样做。一旦你有了一个日期时间,就把它存储在数据库中,你不需要对格式进行协调,(正如其他人在这里所说的那样)。

然后,如果需要,只有在需要在某处显示时才将其重新格式化为不同的表示形式。

string s = "21 June 2010 09:23:56";
DateTime dt;
if (DateTime.TryParse(s, out dt))
   // dit is a valid datetime, storeit or whatever
else
   throw ApplicationException(
        "{0} is not a valid datetime.", s);
//  --  and now you can redisplay dt any way you want -----
debug.Print(s.ToString("d MMM yyyy");
debug.Print(s.ToString("HH:mm:ss");
debug.Print(s.ToString("dddd, d MMM yy");
debug.Print(s.ToString("MMM d, yyyy");
debug.Print(s.ToString("HH:mm:ss dddd");

//等......

答案 4 :(得分:0)

以下是此示例。

    String strDate="12/20/2013";
    string strFormat="dd/MM/yyyy";
    DateTime objDT;

    if (DateTime.TryParseExact(strDate, strFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out objDT) == true)
    {
        Response.Write("<b>Formatted DateTime : </b>" + objDT.ToString());
    }
    else
    {
        Response.Write("<b>Not able to parse datetime.</b>");
    }
相关问题