等效于 PHP 的 date_create()->format() 的 C#? [关闭]
Posted
技术标签:
【中文标题】等效于 PHP 的 date_create()->format() 的 C#? [关闭]【英文标题】:Equivalent in C# of PHP's date_create()->format()? [closed] 【发布时间】: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”应该都能找到正确的结果。 【参考方案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);
【讨论】:
以上是关于等效于 PHP 的 date_create()->format() 的 C#? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
PHP 等效于 .NET/Java 的 toString()