连接格式化字符串时出现问题

时间:2011-03-22 12:19:51

标签: c# datetime string-formatting

 currTime = DateTime.Now.ToString("u");

上面的代码首先将时间格式化为yyyy-mm-dd hh-mm-ss(Alpha数字)。

我想删除字母数字字符,所以我使用了

 currTime = currTime.Substring(0, currTime.Length - 1);

然后我使用

将“.000”添加到最后
 currTime = currTime + ".000";

然而,这会删除格式,并在显示时显示标准dd-mm-yyyy格式。所以我的问题分为两部分:

因此...

如何在没有字母数字字符的情况下将DateTime.Now格式化为yyyy-mm-dd hh:mm:ss

如何在不丢失格式的情况下添加“.000”?

3 个答案:

答案 0 :(得分:6)

DateTime.Now.ToString(@"yyyy\-MM\-dd hh\-mm\-ss.000")但您确定不想要DateTime.Now.ToString(@"yyyy\-MM\-dd hh\:mm\:ss.000")吗?

答案 1 :(得分:1)

我恐怕只是不相信你。简单的字符串连接不会开始乱用字符串的其余部分。

这是一个简短但完整的示例,显示更改:

using System;

class Test
{
    static void Main()
    {
        string currTime = DateTime.Now.ToString("u");
        currTime = currTime.Substring(0, currTime.Length - 1);
        currTime = currTime + ".000";
        Console.WriteLine(currTime);
    }
}    

输出:

2011-03-22 12:28:39.000

我认为这不是提出这种格式的最佳方式,但它肯定不会像你声称的那样表现。你能想出一个类似的简短但完整的程序来支持你的断言“这会删除格式并将其显示为标准的dd-mm-yyyy格式”吗?我的猜测是你没有看到你真正想到的你正在看到的东西,但如果没有一个完整的程序,很难说出真正发生了什么。

答案 2 :(得分:0)

这样的事情应该是这样做的,稍微改动会附加实际小数秒而不是硬编码的.000

var result = string.Format("{0:yyyy-MM-dd hh:mm:ss.fff}", DateTime.Now);