格式化日期,如.NET中的moment.js

时间:2013-03-18 14:13:59

标签: asp.net-mvc date-formatting

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

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

5 个答案:

答案 0 :(得分:6)

终于找到了答案:Humanizer负责这个。

https://github.com/MehdiK/Humanizer

谢谢大家。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你可以使用.Net inbuild功能。

用于解析:

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

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

格式化:

Custom Date and Time Format Strings

Standard Date and Time Format Strings

对于DateTime操作:

参见:DateTime Structure

答案 3 :(得分: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;
    }

答案 4 :(得分:0)

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