【问题标题】:return a date object or string from a momentjs object created with a time string从使用时间字符串创建的 momentjs 对象返回日期对象或字符串
【发布时间】:2014-10-29 22:06:54
【问题描述】:

我在sql server中保存了这个时间:'12:45:00'

我需要在 html 时间选择器中显示这个时间,该时间选择器需要以下时间:

Timepicker 指令:“ng-model”值必须是

  • 一个日期对象,
  • 自 01.01.1970 以来的毫秒数或
  • 代表 RFC2822 或 ISO 8601 日期的字符串

我必须如何使用可以将我的值绑定到 timepicker 的 momentjs 库?

【问题讨论】:

  • 你不需要 moment.js,只需使用 Date 对象:new Date(datetime)。服务器上的时间应该是日期时间格式。
  • 我不想将服务器上的时间保存为 datetime,因为这是不必要的。我只是有时间。做 moment("08:30:59") 并没有给我任何东西......

标签: javascript angularjs momentjs


【解决方案1】:

我找到了解决办法:

moment(endTime,"HH:mm").toDate();

这样我得到的只是时间和日期是隐式创建的——我不需要——

【讨论】:

    【解决方案2】:

    如果您的 Web 服务在其响应中以字符串形式返回日期,则在大多数情况下,最好使用 $http transformer 将它们转换为您可以更轻松地在 JavaScript 中使用的 Date 对象。使用原生 JavaScript Date 对象意味着您可以始终如一地直接绑定到您的模型,更轻松地使用$filters,并操纵日期和时间,而不必担心这里或那里的转换。

    此转换器在响应$http 请求时返回的任何数据中查找 ISO8601 格式的日期,使用 Moment.js 对其进行验证并将其转换为 JavaScript Date 对象。

    $httpProvider.defaults.transformResponse.push(function (data) {
        /**
        * Converts ISO 8601 date strings returned by the web service into
        * JavaScript Date objects.
        * @param {Object} obj The server response
        * @return {Object}
        */
        var convertDateStringsToDates = function (obj) {
            // Matches format: 2014-07-23T00:00:00
            var regex = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d/;
            var name, value, match, dt;
    
            for (name in obj) {
                if (!obj.hasOwnProperty(name)) { continue; }
    
                value = obj[name];
    
                // Check for string properties which look like dates
                if (typeof value === 'string' && (match = value.match(regex))) {
                    dt = moment(match[0]);
    
                    // confirm parseable by Moment.js
                    if (dt.isValid()) {
                        obj[name] = dt.toDate();
                    }
                } else if (typeof value === 'object') {
                    // Recurse into the object
                    convertDateStringsToDates(value);
                }
            }
    
            return obj;
        };
    
        // Ignore things that are not objects
        return typeof data === 'object' ? convertDateStringsToDates(data) : data;
    }); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多