2009-09-09 56 views
1

我有一個DateTime?領域。它目前正在存儲UT。如何格式化日期時間?在C#中?

我希望它能以我提供的格式存儲時間。在這種情況下:

"dd.MM.yyyy HH:mm:ss" 

如何更改DateTime的值?字段來保存格式化的值。

+1

你是什麼意思「存儲「 - >在哪裏? DB,字符串,文本......例如除非在系統設置中更改,否則不會更改數據庫使用的表示形式。 – 2009-09-09 07:38:13

+0

什麼是日期時間?和它是如何不同於正常日期時間 – 2009-09-09 07:44:17

+0

@incredible_Honk - 這是一個nullabe日期時間 – stevehipwell 2009-09-09 07:46:08

回答

3
string StringValue = MyDate.HasValue ? MyDate.Value.ToString("dd.MM.yyyy HH:mm:ss") : string.Empty; 
1

你的意思是這個:?

string s = myDate.ToString("dd.MM.yyyy HH:mm:ss"); 

或可空日期時間:

string s = myDate == null ? null : myDate.Value.ToString("dd.MM.yyyy HH:mm:ss"); 
+0

是的,但它不適用於DateTime ?僅在日期時間 – 2009-09-09 07:39:12

+0

嘗試myDate.Value.ToString,確保它不是第一個。 – RichardOD 2009-09-09 07:41:57

+0

或更具體地說,myDate.Value.ToString(「dd.MM.yyyy HH:mm:ss」) – RichardOD 2009-09-09 07:42:36

1

商店作爲字符串。

+0

無法更改其來自Web服務的數據類型...如果可能確實需要使用此DateTime?數據類型... – 2009-09-09 07:40:17

+0

@JL,實際的DateTime存儲爲一個很長的滴答數。你看到的只是格式化字符串,所以你也必須格式化它。 – 2009-09-09 07:43:40

4

您不會改變時間的存儲方式,您可以通過使用將DateTime轉換爲字符串的方法來更改時間表示形式(在您的情況下,theDate.Value.ToString(「dd.MM.yyyy HH:mm: SS「))。

如果您想要某種始終產生您指定格式的東西,則可以編寫自己的日期包裝類。

+1

很好的答案,特別是關於存儲的評論! +1 – Cerebrus 2009-09-09 07:49:56

+0

我不認爲OP的意思是'存儲',因爲這個價值來自於網絡服務。我認爲他意味着如何顯示該字段中的DateTime(DataView也許)! – stevehipwell 2009-09-09 08:00:50

1

您不能更改日期本身的值,但可以改變用於將其轉換爲字符串的格式。

試試下面的命令:

String.Format("{0:d/M/yyyy HH:mm:ss}", dt); 
1

非常容易。將日期保存爲字符串,如下所示:

String date = DateTime.Now.Date; date.ToString(「dd.MM.yyyy HH:mm:ss」);

乾杯.. http://www.naresh.se/

2

啊! DateTime問題...大家的最愛! ;-)

這個問題唯一相關的一點是,作爲@ x2在評論中提到,一個DateTime(可爲空或以其他方式)存儲爲多個刻度。您在Watch窗口中看到的只是將該值抽象爲人類可讀的日期和時間組件。

爲什麼要存儲格式化的DateTime對象?這不會打敗擁有DateTime變量的目的嗎? 「格式化」,根據定義意味着轉換爲字符串。這意味着創建一個單獨的字符串變量,該變量保存按照您的要求格式化的Datetime值。在其中一個註釋中,你說你需要使用這個變量...爲什麼不從這個源DateTime變量創建一個格式化的字符串變量,而是。

3

見本expample日期時間格式在C#

using System; 
using System.Globalization; 
class DateAndTimeFormatting 
{ 
    static DateTime dt = DateTime.Now; 
    static void Main() 
    { 
    ShowFormatting(DateTimeFormatInfo.InvariantInfo, "InvariantInfo"); 
    ShowFormatting(DateTimeFormatInfo.CurrentInfo, "CurrentInfo"); 
    } 
    static void ShowFormatting(DateTimeFormatInfo format, string strLabel) 
    { 
    Console.WriteLine(strLabel); 
    Console.WriteLine(new string('-', strLabel.Length)); 
    string[] strFormats = {"d", "D", "f", "F", "g", "G", "m", "r", "s", "t", "T", "u", "U", "y" }; 
    foreach (string strFormat in strFormats) 
     Console.WriteLine("{0}: {1}", strFormat, dt.ToString(strFormat, format)); 
    Console.WriteLine(); 
    } 
} 

通知的strFormats陣列中的ShowFormatting方法。該數組包含可以在ToString方法中使用的格式化字符串。 (可以使用在佔位符的那些相同的字母在Console.WriteLine的可格式化字符串。)該程序首先示出了用於DateTimeFormatInfo.InvariantInfo格式化:

InvariantInfo 
d: 12/02/2006 
D: Saturday, 02 December 2006 
f: Saturday, 02 December 2006 16:48 
F: Saturday, 02 December 2006 16:48:43 
g: 12/02/2006 16:48 
G: 12/02/2006 16:48:43 
m: December 02 
r: Sat, 02 Dec 2006 16:48:43 GMT 
s: 2006-12-02T16:48:43 
t: 16:48 
T: 16:48:43 
u: 2006-12-02 16:48:43Z 
U: Saturday, 02 December 2006 21:48:43 
y: 2006 December 

以下格式示出了用於DateTimeFormatInfo.CurrentInfo:

CurrentInfo 
d: 12/2/2006 
D: Saturday, December 02, 2006 
f: Saturday, December 02, 2006 4:48 PM 
F: Saturday, December 02, 2006 4:48:43 PM 
g: 12/2/2006 4:48 PM 
G: 12/2/2006 4:48:43 PM 
m: December 02 
r: Sat, 02 Dec 2006 16:48:43 GMT 
s: 2006-12-02T16:48:43 
t: 4:48 PM 
T: 4:48:43 PM 
u: 2006-12-02 16:48:43Z 
U: Saturday, December 02, 2006 9:48:43 PM 
y: December, 2006 

當大寫和小寫字母產生不同的結果(如d和D)時,大寫字母會生成更長的字符串。對於r,R,s或u格式的字符串,無論ToString的第二個參數如何,結果都是相同的。 (您也可以定義自己的格式。)

+0

這樣的事情很有用 - http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf – RichardOD 2009-09-09 08:13:52

1

我會添加my one到列表中,我使用的參考,這是短,我可以得到它:

--- Default formats --- 

Tokens: 
dD tT fF gG rsu M Y 

d = short/long [d]ate 
t = short/long [t]ime 
f = short/long [f]ull 
g = short/long [g]eneral or default 
rsu = RFC or ISO format, last 2 are sortable: 
r: Fri, 20 Mar 2009 00:00:00 GMT (RFC1123) 
s: 2009-03-20T00:00:00 (ISO 8601) 
u: 2009-03-20 00:00:00Z (RFC1123) 
M = day & month 
Y = month & year 

--- Custom formats --- 

dd ddd dddd 
15 Mon Monday 

MM MMM MMMM 
06 Jun June 
yy yyyy 
08 2008 

hh HH 
01 13 
mm 
ss 

tt 
AM or PM