【问题标题】:Equivalent in C# of PHP's date_create()->format()? [closed]等效于 PHP 的 date_create()->format() 的 C#? [关闭]
【发布时间】:2014-11-02 01:51:04
【问题描述】:

在 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# 中做到这一点?对不起,简短的问题

【问题讨论】:

  • 看一下 DateTime 类,任何搜索引擎中的“c# DateTime”应该都能找到正确的结果。

标签: c# php date


【解决方案1】:

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

编辑:您会遇到的一个问题是 TimeSpan 没有年份或月份格式字符串。您可能想改用@JonSkeet 的Noda Time,如seen here

【讨论】:

    【解决方案2】:

    在c#中做起来要简单得多,你可以在两个DateTimes上使用减法运算符,其结果是一个TimeSpan,其中包含了天数、小时数、分钟数和秒数区别。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 2011-06-25
      • 2015-06-01
      • 1970-01-01
      • 2018-10-11
      • 2013-01-17
      • 1970-01-01
      相关资源
      最近更新 更多