等价于PHP的C#';s date_create()->;format()


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

在PHP中,您可以执行以下操作:

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没有年或月格式的字符串。您可能需要使用@JonSkeet的Noda时间,如图所示。

在c#中做起来要简单得多,只需在两个DateTimes上使用减法运算符,其结果是TimeSpan,其中包含差值的天数、小时、分钟和秒数。

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

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

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