【发布时间】:2017-02-20 18:46:33
【问题描述】:
在 .NET Framework 上是否有与 PHP 的 strtotime() 函数等效的函数。我说的是它处理类似字符串的能力:
- strtotime("现在")
- strtotime("2000 年 9 月 10 日")
- strtotime("+1 天")
- strtotime("+1 周")
- strtotime("+1 周 2 天 4 小时 2 秒")
- strtotime("下周四")
- strtotime("上周一")
显然DateTime.Parse() 和Convert.ToDateTime() 不这样做。
我发现最接近的是一个只处理其中一些的小类:http://refactormycode.com/codes/488-parse-relative-date
编辑:我不对 C# 编译时特性感兴趣。问题是在运行时将人类相对日期/时间字符串转换为DateTime(即“now”--> DateTime.Now 等)。
【问题讨论】:
-
请注意,根据您的应用程序的目标受众或使用场景,您可能会在此处遇到严重的 I16N 问题。虽然“现在”之类的内容可能很容易翻译成许多不同的语言,但“+1 天”或“下周四”等可能不会。 (去过那里,尝试过,放弃(过于复杂的变化);-)
-
我不确定 strtotime() 是否支持各种语言。只有英文就够了。
-
显然没有(参见php.net/manual/en/datetime.formats.relative.php vs. php.net/manual/de/datetime.formats.relative.php)。但是,如果您只需要关心英语,那么对于 C#/.NET 版本当然也不是问题。
标签: .net string parsing datetime strtotime