C#用RegEx打破DateTime

时间:2012-08-17 17:54:08

标签: c# regex datetime

我有一个存储为DateTime的值。

为了使输出在导出中看起来更具可读性,我想只从表达式中返回MM / DD。

我目前的解决方案是将DateTime作为字符串传递给一个函数,该函数可以有效地将其切成小块,然后再将它重新组合在一起。虽然这有效,但我知道必须有一个更有效/更优雅的解决方案。

我目前的代码如下:

extractDate(DateTimeVar.ToString());

定义:

    private string extractDate(string datetime)
    {
        string[] newString = datetime.Split(' ');
        string newStringArray = newString[0];
        string[] breakUp = newStringArray.Split('/');
        string finalOutput = breakUp[0] + "/" + breakUp[1];
        return finalOutput;
    }

正如你所看到的,相当混乱。我想出的另一个解决方案是切掉前五个字符,因为DateTime的前5个字符总是包含“MM / dd”:

    private string extractDate(string datetime)
    {
        return datetime.Substring(0, 5);
    }

我认为后一种解决方案更好。但是,有没有更好的?感谢。

5 个答案:

答案 0 :(得分:7)

你可以使用:

DateTimeVar.ToString("MM/dd");

不需要自定义方法,因为DateTime.ToString(string)已允许custom format strings for DateTime values

答案 1 :(得分:5)

为什么不使用ToString(formatThatYouWant)覆盖?

代码如下:

.ToString("MM/dd");

请记住,MSDN是你的朋友:)

答案 2 :(得分:2)

使用DateTimeVar.ToString("MM/dd")方法。

有关可以传递给ToString方法的完整选项列表,请检查Custom Date and Time Format Strings on MSDN

答案 3 :(得分:2)

datetime.ToString("MM/dd")怎么样?或datetime.Month和datetime.Day

答案 4 :(得分:1)

你不需要正则表达式,你可以使用DateTime.ToString(string)方法提取你想要的东西。

http://msdn.microsoft.com/en-us/library/zdtaw1bw

datetimevar.ToString("MM/dd");

然后你不需要关心语言环境作为没有参数的ToString()的输出 取决于你的文化,即价值不同......