2010-07-30 112 views
2

我一直在Google上搜索一段時間,對於我的生活似乎無法找到解決方案。我認爲這很容易,但是這需要很長時間,並且正在轉向使用stackoverflow。將字符串轉換爲特定的DateTime格式

我需要將包含日期和時間的字符串轉換爲DateTime變量。我已經格式化了我想要存儲的確切格式的字符串,但是當我將它轉換爲DateTime時,它不斷添加我不想要的秒數。我希望它存儲爲01/01/2010 09:00 AM。這裏是我迄今爲止使用的代碼:

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

..但它不斷追加秒。請指教。

+0

請不要在標題中複製「ASP.NET C#」等標籤。只要將它們留在標籤中即可。 – 2010-07-30 18:00:19

回答

7

如果它存儲爲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/

+0

即時通訊做與字符串>日期時間,不DateTime->字符串 ...我需要這些信息存儲在與DateTime類型 – 2010-07-30 17:18:06

+1

數據庫見我的編輯...你不能改變數據庫如何(或.Net運行時,等等)存儲了一個特定的數據類型。就好像他是一個程序員約吉貝拉會說,數據類型是它是什麼,它包含它所包含的字段。無論您如何插入datetime數據類型,都會有秒數。這實際上只是它如何顯示給你的問題。 – David 2010-07-30 17:21:06

+0

除非,當然,你定義自己的數據類型... – David 2010-07-30 17:24:12

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,您還可以格式化選擇數據的方式或者只是將它作爲C#DateTime對象選擇到C#中,然後當再次表示它時,請格式化ToString(),使其不顯示不想要的數據。

1

試試這個。

DateTime dt; 
    if (DateTime.TryParse(startTime, out dt)) 
    { 
     string newDateTime = dt.ToString("MM/dd/yyyy hh:mmtt"); 
    } 
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"); 

//等等......

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>"); 
    } 
相關問題