2010-08-21 78 views

回答

0

这取决于您的程序在哪种文化上运行。检查System.Threading.Thread.CurrentThread.CurrentCulture和CurrentUICulture属性并相应地设置它们。

CultureInfo类型,除其他外,告诉如何格式化数字和日期。 DateTimeFormat属性就是你感兴趣的东西。如果你需要一种专门的文化,你可以创建一个,并将其DateTimeFormat设置为你需要的任何东西,然后把它分配给CurrentCulture属性。

很可能你只是想选择一个预先定义的文化。在此处阅读更多信息:http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx

2

内部表示形式不相关。如果您要退回DateTime,那将是DateTime

如果要将DateTime的格式设置为显示,则需要使用格式字符串以任意格式显示它。

有关不同的custom datatime format strings,请参阅MSDN。

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1); 
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
        CultureInfo.InvariantCulture)); 
// Displays 06:09:01 PM 

Console.WriteLine(date1.ToString("HH:mm:ss", 
        CultureInfo.InvariantCulture)); 
// Displays 18:09:01  
  • hh格式说明将返回基于12小时小时。
  • tt格式说明符将返回AM/PM指示符。
  • HH格式说明符将返回24小时制小时。

正如其他人指出的那样,您可以将线索文化更改为默认使用24小时的文化,但这也会影响数字格式(例如,小数和千分号)。

+0

不知道你可以使用日期时间为收音机(猜你是上午/下午而不是上午/下午)。就像你指向内部 – 2010-08-21 08:14:58

+0

@Rune FS - 很好的地方...我不得不读你的评论3次,我才明白你在说什么:) – Oded 2010-08-21 08:19:05

1

将当前线程上的CultureInfo更改为默认为24小时的Culture。

//In Sweden we use 24hrs format. 
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("sv-se"); 

编辑:你也可以只更改时间格式为当前的文化信息。

Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongTimePattern = "HH:mm:ss"; 
Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern = "HH:mm"; 

//DateTime.ToString() will output something like (en-us culture) 8/21/2010 10:11:37 
3

,而不是与文化打,使扩展方法:

public static class Extensions 
{ 
    public static string To24HourTime(this DateTime dateTime) 
    { 
     return dateTime.ToString("HH:mm:ss"); 
    } 
} 

您可以使用方法,然后如下:

DateTime.Now.To24HourTime(); 
+0

整洁:)。 。 。 。 。 – user287745 2010-08-21 08:44:17

相关问题