4

是否有任何与 moment.js 类似但用于服务器端格式的 .NET 库?

编辑:所以我可以做类似的事情: someDate.FromNow(); 并返回如下内容:2 年后、明年、3 个月、2 周、2 天、12 小时、明天、30 分钟、5 秒、现在、不到 1 分钟前、1 分钟前, 1 小时前, 昨天, 3 天前, 1 周前, 1 个月前, 1 个月前, 等等。

4

5 回答 5

8

终于找到了答案:Humanizer 照顾好这个。

https://github.com/MehdiK/Humanizer

谢谢大家。

于 2014-08-14T23:39:47.727 回答
1

您可以使用 .Net 内置功能。

对于解析:

DateTime.Parse 方法(字符串):将日期和时间的指定字符串表示形式转换为其等效的 DateTime。

DateTime.ParseExact 方法 (String, String, IFormatProvider):使用指定的格式和特定​​于区域性的格式信息将日期和时间的指定字符串表示形式转换为其 DateTime 等效项。字符串表示的格式必须与指定的格式完全匹配。

对于格式化:

自定义日期和时间格式字符串

标准日期和时间格式字符串

对于日期时间操作:

参考:日期时间结构

于 2013-03-18T14:38:28.183 回答
0

.NET 类库有很多日期和时间格式化功能:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2013-03-18T14:19:06.317 回答
0

我们实现了类似于旧的 VB6 DateDiff 函数的东西。

这将为您提供基于特定单位(年、季度、月、日、小时、分钟、秒、毫秒、滴答声等)的两个日期之间的差异。

您可能可以使用或修改它来满足您的需求。我们可能会添加一个将单元(howToCompare)作为强类型枚举的覆盖。

您可以在另一种方法中使用它,该方法收集“普通英语”的确切时差,为您提供类似: “[DateX] 和 [DateY] 之间的差异是 1 年、3 个月、12 天、4 小时、23 分钟、55 秒和 213 毫秒。”

    /// <summary>
    /// Same common parameters as the VB6 DateDiff
    /// </summary>
    /// <example>
    /// System.DateTime dt1 = new System.DateTime(1974,12,16);
    /// System.DateTime dt2 = new System.DateTime(1973,12,16);
    /// Console.Write(DateDiff("yyyy", dt1, dt2).ToString()));
    /// Returns:  -1
    /// </example>
    /// <param name="howToCompare">The units to return (m = minutes, s = seconds, t = ticks, mm = milliseconds, yyyy = years, q = quarters, d = days)</param>
    /// <param name="startDate">The starting date to compare</param>
    /// <param name="endDate">The ending date to compare</param>
    /// <returns>The difference in selected units</returns>
    public static double DateDiff(string howToCompare, System.DateTime startDate, System.DateTime endDate)
    {
        double diff = 0;
        try
        {
            System.TimeSpan TS = new System.TimeSpan(startDate.Ticks - endDate.Ticks);
            switch (howToCompare.ToLower())
            {
                case "m":
                    diff = System.Convert.ToDouble(TS.TotalMinutes);
                    break;
                case "s":
                    diff = System.Convert.ToDouble(TS.TotalSeconds);
                    break;
                case "t":
                    diff = System.Convert.ToDouble(TS.Ticks);
                    break;
                case "mm":
                    diff = System.Convert.ToDouble(TS.TotalMilliseconds);
                    break;
                case "yyyy":
                    diff = System.Convert.ToDouble(TS.TotalDays / 365);
                    break;
                case "q":
                    diff = System.Convert.ToDouble((TS.TotalDays / 365) / 4);
                    break;
                default:
                    //d
                    diff = System.Convert.ToDouble(TS.TotalDays);
                    break;
            }
        }
        catch
        {
            diff = -1;
        }

        return diff;
    }
于 2013-07-11T17:10:54.760 回答
0

看看Noda Time,noda time 是一个用于真正高级日期时间操作的 .net 库。

于 2014-04-15T07:31:47.710 回答