如何格式化DateTime?在c#?

时间:2009-09-09 07:36:01

标签: c# datetime

我有一个DateTime?领域。它目前存储UT。

我希望以我提供的格式存储时间。在这种情况下:

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

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

11 个答案:

答案 0 :(得分:4)

您不会改变时间的存储方式,您可以使用将DateTime转换为字符串的方法来更改时间表示(在您的情况下为theDate.Value.ToString(“dd.MM.yyyy HH:mm:ss”) “))。

如果你想要总是产生你指定格式的东西,你可以编写自己的日期包装类。

答案 1 :(得分:3)

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

答案 2 :(得分:3)

请参阅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();
  }
}

注意ShowFormatting方法中的strFormats数组。该数组包含您可以在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的第二个参数如何,结果都是相同的。 (您也可以定义自己的格式。)

答案 3 :(得分:2)

啊! DateTime个问题...每个人都喜欢!! ; - )

这个问题唯一相关的一点是,正如评论中提到的@ x2一样,DateTime(可空或其他)存储为多个刻度。您在Watch窗口中看到的只是将该值抽象为人类可读的日期和时间组件。

为什么要将DateTime对象存储为格式化?难道这不会破坏拥有DateTime变量的目的吗?根据定义,“格式化”意味着转换为字符串。这意味着创建一个单独的字符串变量,该变量保存根据您的要求格式化的Datetime值。在其中一条评论中,您说您需要使用此变量...为什么不从此源DateTime变量创建格式化的字符串变量。

答案 4 :(得分:1)

你的意思是:?

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

或可以为空的DateTime:

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

答案 5 :(得分:1)

答案 6 :(得分:1)

将其存储为字符串。

答案 7 :(得分:1)

您无法更改日期本身的值,但可以改变用于将其转换为字符串的格式。

尝试以下命令:

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

答案 8 :(得分:1)

非常容易。将日期保存在字符串中,如下所示:

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

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

答案 9 :(得分:1)

答案 10 :(得分: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