【问题标题】:datetime-local different format after selectingdatetime-local 选择后的不同格式
【发布时间】:2017-03-04 12:00:17
【问题描述】:

Given 是一个带有<input type='datetime-local'> 输入的离子应用,可在安卓系统上运行。问题在于用户选择日期后输入具有不同的格式。 Start 是在用户选择日期之后,Ende 是默认格式。我已经尝试添加minmaxstep 属性。

不带毫秒的格式是首选。

控制器

$scope.event = {};
// Default dates
$scope.event.start = new Date();
$scope.event.end = new Date();
$scope.event.end.setHours($scope.event.start.getHours() + 2);

HTML 部分

<label class="item item-input underlinedInput equal-padding ">
    <span class="input-label">Start</span>
    <input type="datetime-local" placeholder="Start" ng-model="event.start" step="1" min="1900-01-01T00:01:00" max="2900-01-01T23:59:59">
</label>
<label class="item item-input underlinedInput equal-padding ">
    <span class="input-label">Ende</span>
    <input type="datetime-local" placeholder="Ende" ng-model="event.end" step="1" min="1900-01-01T00:01:00" max="2900-01-01T23:59:59">
</label>

【问题讨论】:

  • 如果您使用明确的格式会有所帮助。 2017 年 3 月 4 日对于大多数人来说是 4 月 3 日,但对于一些人来说是 3 月 4 日。

标签: javascript html angularjs date


【解决方案1】:

对于任何感兴趣的人,我写了一个工厂来解决我的问题。

不要创建像$scope.event.start = new Date() 这样的日期,只需使用$scope.event.start = Tools.currentDate();

.factory('Tools', function () {
    return {
      utcDate: function (date) {
          var d = new Date(date.replace(' ', 'T'));
          d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);
          return d;
      },
      currentDate: function () {
          var d = new Date();
          var year = d.getFullYear();
          var month = this.leadingZero(d.getMonth());
          var day = this.leadingZero(d.getDate());
          var hour = this.leadingZero(d.getHours());
          var minutes = this.leadingZero(d.getMinutes());

          return this.utcDate(year+"-"+month+"-"+day+"T"+hour+":"+minutes+":00");
     },
     leadingZero: function(number){
         return ("0"+number).substr(-2,2);
     }
   }
})

【讨论】:

    【解决方案2】:

    使用日期对象,如

    $scope.event.start = new Date(2010, 11, 28, 14, 57);
    

    参考这个plunker

    【讨论】:

      【解决方案3】:

      您可以使用moment JS,并且可以更好地控制应用程序中的日期操作。 moment js docs

      var startDate = moment().format('DD/MM/YYYY, HH:MM A');
      var endDate = moment().add(2, 'hours').format('DD/MM/YYYY, HH:MM A')
      

      【讨论】:

        猜你喜欢
        • 2016-12-23
        • 2020-11-15
        • 2015-12-14
        • 1970-01-01
        • 1970-01-01
        • 2021-01-06
        • 2020-10-27
        • 2018-01-14
        • 2020-02-08
        相关资源
        最近更新 更多