如何在01-24而不是00-23中表示.NET DateTime 24小时格式?

时间:2010-09-02 20:23:58

标签: .net datetime format tostring

我有一个奇怪的业务要求,输出日期为01:00到24:00,而不是通常的00:00到23:00。这真是一个疯狂的要求,但遗憾的是我认为我无法避免它。

这将是我们软件中的一个配置选项,所以我仍然需要支持普通的00-23,所以我希望我能用格式字符串以某种方式做到这一点。但我也在考虑使用正则表达式对结果字符串进行后处理,如果这样可以更容易。

谢谢!

2 个答案:

答案 0 :(得分:3)

通过创建自己的格式提供程序来扩展.NET:http://msdn.microsoft.com/en-us/library/0asazeez(VS.71).aspx

答案 1 :(得分:2)

这听起来像是包装类的一个很好的候选者,它用于根据业务规则格式化DateTime:

public class BusinessDateTimeFormatter
{
    public BusinessDateTimeFormatter(DateTime dateTime)
    {
        _dateTime = dateTime;
    }

    public override string ToString()
    {
        return String.Format("{0} {1}:{2}", _dateTime.Date, _dateTime.Hour + 1, _dateTime.Minute);
    }
}

或者,也许更准确地说,您可以创建一个表示业务的DateTime想法的类型。在面向对象的设计中,使用自定义类型替换原始类型经常发生,因为要建模的域具有与您描述的域相同的特殊限制。