C# 将字符串转换为特定的日期时间格式

C# 将字符串转换为特定的日期时间格式,c#,asp.net,C#,Asp.net,我已经在谷歌上搜索了一段时间了,我似乎一辈子都找不到解决办法。我原以为这会很容易,但时间太长,我转向stackoverflow 我需要将包含日期和时间的字符串转换为DateTime变量。我已经按照我想要的格式格式化了字符串,但是当我将其转换为日期时间时,它会不断增加我不想要的秒数。我希望它存储为01/01/2010 09:00AM。以下是我到目前为止一直在使用的代码: DateTime.ParseExact(startTime,"MM/dd/yyyy hh:mmtt", null); …但它一

我已经在谷歌上搜索了一段时间了,我似乎一辈子都找不到解决办法。我原以为这会很容易,但时间太长,我转向stackoverflow

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

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

…但它一直在增加秒数。请告知。

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

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

Label1.Text = startTime.ToString("MM/dd/yyyy hh:mmtt");
编辑-添加

要在GridView中设置格式,请参见此处:

我认为,当你说它在增加秒数时,你的意思是当你试图读出它时,它也在读取秒数,你想做如下的事情

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,您也可以格式化您选择数据的方式,或者只是将其作为C#DateTime对象选择到C#中,然后,当您再次表示它时,请格式化ToString(),使其不会显示您不想要/不拥有的数据。

试试这个

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

如果您有一个字符串,您必须首先保证它确实可以转换为datetime。
因此,首先,这样做。一旦您有了日期时间,就可以按原样将其存储在数据库中,您不必担心其格式(正如其他人在这里所说的)

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

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");

//等等

下面是一个例子

    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>");
    }
String strDate=“12/20/2013”;
字符串strFormat=“dd/MM/yyyy”;
日期时间objDT;
if(DateTime.TryParseExact(strDate、strFormat、CultureInfo.InvariantCulture、datetimestyle.None、out objDT)=true)
{
Write(“格式化日期时间:+objDT.ToString());
}
其他的
{
Write(“无法解析日期时间”);
}

im doing string->DateTime,而不是DateTime->string…我需要将其存储在类型为DateTimeSee my edit的数据库中。。。您不能更改数据库(或.Net运行时等)存储特定数据类型的方式。正如约吉·贝拉(Yogi Berra)所说,如果他是一名程序员,那么数据类型就是它本身,并且包含它所包含的字段。datetime数据类型将具有秒数,无论您如何插入它。这实际上只是一个如何向你展示的问题。我理解你的意思。问题是我在gridview中输出它,不确定如何操作输出的数据。我是否使用gridview事件并在codebehind中对其进行操作?@mobile-您可能会问另一个问题:“如何指定网格视图中显示的日期/时间格式?”。啊。。。我懂了。。。请注意:请不要在标题中重复类似“ASP.NET C#”的标记。把它们留在标签上就行了。