【问题标题】:How to work whith md-datepicker and moment?如何使用 md-datepicker 和 moment?
【发布时间】:2019-04-19 04:45:47
【问题描述】:

在我的应用程序中,我使用了 momemt 类型的 $scope 变量。 我使用来自 Angular Materialjs 的 md-datepicker 来更改 ng-model 的日期变量。

md-datepicker 仅适用于 Date 类型,我可以从 moment 转换,但在通过 md-datepicker $scope 更改数据后,变量将类型从 Moment 更改为 Date。

如何将结果md-datepicker日期类型转换回时刻类型? 这是需要在其他使用moment的功能中使用它。

<md-datepicker ng-model="momentfrom" md-open-on-focus="true" name="dateFrom" >
</md-datepicker>

momentfrom 变量与md-datepicker 一起工作后将类型更改为日期,需要转换为时刻。

app.config(['$mdDateLocaleProvider', function ($mdDateLocaleProvider) {
    $mdDateLocaleProvider.parseDate = function(dateString) {
        var m = moment(dateString, ["DD.MM.YYYY"],true);
        return m.isValid() ? m.toDate() : new Date(NaN);
    };

    $mdDateLocaleProvider.formatDate = function (date) {
        return date ? moment(date).format('DD.MM.YYYY') : '';
    };
}]);

【问题讨论】:

    标签: angularjs angularjs-material


    【解决方案1】:

    moment 的格式错误。在 formatDate 函数中使用它:

    return moment(date).format('YYYY-MM-DD');
    

    如果您想在加载时将日期设置为空,则使用将返回更改为:

    return date ? moment(date).format('YYYY-MM-DD') : '';
    

    有关$mdDateLocaleProvider 功能的更多信息,请参阅AngularJS Material docs

    【讨论】:

    • $mdDateLocaleProvider.parseDate = function(dateString) { var m = moment(dateString, ["DD.MM.YYYY"],true);返回 m.isValid() ? m.toDate() : 新日期(NaN); };
    • 只需要返回 m.isValid() 吗? m.toDate() : 新日期(NaN);返回时刻类型,但它返回日期类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    相关资源
    最近更新 更多