C#:我如何将当前时间变成字符串?

时间:2009-01-05 22:30:01

标签: c#

如何将当前的h / m / s AM时间转换为字符串?也许数字形式的日期(01/02/09)到另一个日期?

6 个答案:

答案 0 :(得分:75)

我想在这些答案中指出一些事情。在日期/时间格式字符串中,“/”将替换为,无论用户的日期分隔符是,并且“:”将替换为,无论用户的时间分隔符是什么 。也就是说,如果我将日期分隔符定义为'。' (在区域和语言选项控制面板小程序中,“intl.cpl”),我的时间分隔符为'?' (只是假装我像那样疯狂),然后

DateTime.Now.ToString("MM/dd/yyyy h:mm tt")

将返回

01.05.2009 6?01 PM

在大多数情况下,这是您想要的,因为您想要尊重用户的设置。但是,如果您要求格式是特定的(例如,如果它将被其他人解析掉),那么您需要转义这些特殊字符:

DateTime.Now.ToString("MM\\/dd\\/yyyy h\\:mm tt")

DateTime.Now.ToString(@"MM\/dd\/yyyy h\:mm tt")

现在将返回

01/05/2009 6:01 PM

修改

然后,如果你 真的 想要尊重用户的设置,你应该使用标准的日期/时间格式字符串之一,这样你不仅要尊重用户对分隔符的选择,以及日期和/或时间的一般格式。

DateTime.Now.ToShortDateString()
DateTime.Now.ToString("d")

两者都会使用标准的美国选项返回“1/5/2009”,或者使用标准的英国选项返回“05/01/2009”。

DateTime.Now.ToLongDateString()
DateTime.Now.ToString("D")

两者都将在美国地区返回“2009年1月5日星期一”或英国“2009年1月5日”。

DateTime.Now.ToShortTimeString()
DateTime.Now.ToString("t");

“6:01 PM”在美国,“18:01”在英国。

DateTime.Now.ToLongTimeString()
DateTime.Now.ToString("T");

“6:01:04 PM”在美国,“18:01:04”在英国。

DateTime.Now.ToString()
DateTime.Now.ToString("G");

“1/5/2009 6:01:04 PM”在美国,“05/01/2009 18:01:04”在英国。

还有许多其他选择。请参阅standard date and time format stringscustom date and time format strings的文档。

答案 1 :(得分:20)

您也可以使用格式字符串。

string time = DateTime.Now.ToString("hh:mm:ss"); // includes leading zeros
string date = DateTime.Now.ToString("dd/MM/yy"); // includes leading zeros

或某些快捷方式(如果格式适合您)

string time = DateTime.Now.ToShortTimeString();
string date = DateTime.Now.ToShortDateString();

要么应该工作。

答案 2 :(得分:10)

DateTime.Now.ToString("h:mm tt")
DateTime.Now.ToString("MM/dd/yyyy")

以下是一些common format strings

答案 3 :(得分:8)

以单个字符串获取系统日期和时间的方法

public static string GetTimeDate()
{
    string DateTime = System.DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss");   
    return DateTime;
} 

sample OUTPUT :-16-03-2015 07:45:15

答案 4 :(得分:4)

在访问DateTime.Now时要小心两次,因为这可能使得跨越半夜的呼叫在极少数情况下你会得到古怪的结果而且会让你不知所措。

为安全起见,如果您要多次使用它,则应首先将DateTime.Now分配给局部变量:

var now = DateTime.Now;
var time = now.ToString("hh:mm:ss tt");
var date = now.ToString("MM/dd/yy");

注意使用小写“hh”会显示从00-11到下午的小时数,并且“tt”显示AM / PM,这是所要求的问题。如果您想要24小时制00-23,请使用“HH”。

答案 5 :(得分:2)

string t = DateTime.Now.ToString("h/m/s tt");
string t2 = DateTime.Now.ToString("hh:mm:ss tt");
string d = DateTime.Now.ToString("MM/dd/yy");

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx