相当于PHP的date_create()的C# – > format()?

Equivalent in C# of PHP's date_create()->format()?

在PHP中,可以这样做:

1
date_diff(date_create('2013-01-27 22:14:44 UTC'), date_create(date('Y-m-d H:i:s e')))->format('%y year(s), %m month(s), %d day(s), %H hour(s), %i minute(s) and %s second(s)')

从一个日期开始计算年、日、月等的数量,而不仅仅是其中一个日期。在C语言中也有这样的方法吗?抱歉问这么短的问题


在c_中,从另一个对象中减去一个DateTime对象会使您返回TimeSpan结构。您可以使用TimeSpan.ToString("formathere")从中获得格式良好的字符串。

编辑:一个问题是TimeSpan没有年份或月份格式字符串。如图所示,您可能希望使用@jonsket的noda时间。


在C中做的事情要简单得多,您只需在两个日期时间上使用减法运算符,其结果是一个时间跨度,其中包含差异的天数、小时、分钟和秒数。

1
2
        DateTime date1 = new DateTime(2013, 01, 27, 22, 14, 44, 00, DateTimeKind.Utc);
        TimeSpan diff = date1 - DateTime.Now;

然后,您可以通过多种方式格式化输出,有关更多格式选项,请参阅此处。

1
        string output = String.Format("{0:dd} day(s), {0:hh} hour(s), {0:mm} minute(s) and {0:ss} second(s)", diff);