【问题标题】:Angular bootstrap datepicker - how to set date explicitly?Angular bootstrap datepicker - 如何明确设置日期?
【发布时间】:2015-06-28 13:40:09
【问题描述】:

Angularjs Bootstrap datepicker 太棒了。但是当我尝试通过javascript选择日期时遇到问题。例如,如果从 1990 年 4 月 5 日的特定对象读取此数据,我怎样才能使日期选择器选择的日期为该日期:4/5/1990?

提示:当我将数据提供给用户进行编辑时,我需要这个。

看看我当前的代码:

HTML

<input type="text" class="form-control" ng-model="Birthdate" id="Birthdate" name="Birthdate" required autocomplete="on" datepicker-popup="dd/MM/yyyy" is-open="opened" max-date="'2015-06-22'" datepicker-options="dateOptions" date-disabled="disabled(date, mode)"
                               ng-required="true" close-text="Close" placeholder="Enter Birthdate"  />

js

$scope.Birthdate = $scope.users[id].Birthdate;

但是选择的日期出现在两种情况下:

第一种情况:如果日期是 1986 年 4 月 5 日,它会交换日期格式的日期和月份。即:1990 年 4 月 5 日---变成---> 1990 年 5 月 4 日

第二种情况:没有选择日期,如果是这个日期:28/5/1986

当我从对象中读取日期时,请帮助我在日期选择器中选择日期,如果是 4/51990,则日期选择器选择的日期应该正是那个没有混乱的日期。如果我有这个日期 1986 年 5 月 28 日,日期选择器应该坚持/选择那个日期。

【问题讨论】:

  • 那么,您要以什么格式绑定数据,就好像您正在编辑它一样? YYYY-MM-DD?你想展示哪个? MM/DD/YYYY 还是 DD/MM/YYYY?
  • @JeremyJackson 我试图显示的内容与我从对象中读取的内容相同。 DD/MM/YYYY
  • 所以对象日期存储为DD/MM/YYYY?如果将其格式化为 YYYY-MM-DD 会怎样?
  • @JeremyJackson 为什么?也许我不明白你的目的是什么?
  • 我认为也许可以做到这一点,但经过一些研究后并非如此。你能发布你的 dateOptions 变量吗?

标签: javascript angularjs twitter-bootstrap datepicker bootstrap-datepicker


【解决方案1】:

看到这个 plnkr http://plnkr.co/edit/mDHliPweKoUNOAmVv5oo?p=preview

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<pre>Raw date is: <em>{{dt}}</em></pre>
您从服务器检索的日期应具有与原始日期相同的格式,以便日期选择器接受您不能将已格式化的日期作为模型传递这是这里的问题

【讨论】:

    【解决方案2】:

    问题 1:如果从 1990 年 4 月 5 日的特定对象中读取此数据,如何使日期选择器选择的日期为 1990 年 4 月 5 日 第一种情况:如果日期是 1986 年 4 月 5 日,则交换日期格式的日期和月份。即:1990 年 4 月 5 日---变成---> 1990 年 5 月 4 日 覆盖今天的函数

    $scope.today = function() {
    $scope.dt = "4/5/1990"; };  $scope.today();
    

    问题 2:如果是这个日期,则没有选择日期:28/5/1986 答案:使用 moment.js。这是因为使用字符串设置日期总是错误的。它总是建议使用一些标准库。

    $scope.today = function() {
    $scope.dt = moment("28/5/1986", "DD-MM-YYYY").format();};  $scope.today();
    

    Moment JS 是一个很棒的库,可以在您想要格式化日期时使用。

    示例http://plnkr.co/edit/NWQutvl8vXY9YP2LoIZ8

    【讨论】:

      【解决方案3】:

      日期选择器返回的日期是 2015-06-03T15:25:51.211Z。但我将其截断为:2015-06-03 并将其保存在数据库中。

      现在问题来了,当我将 2015-06-03 绑定到 datepicker 时,它不接受它。它只接受这个:2015-06-03T15:25:51.211Z

      这是我发现的问题,我通过不截断日期并将其存储为 2015-06-03T15:25:51.211Z 来解决它。日期选择器能够绑定它以供用户编辑。

      【讨论】:

        【解决方案4】:

        @AbuTaha:这个问题也可以用moment js来解决。

        $scope.today = function() {
        $scope.dt = moment("2015-06-03T15:25:51.211Z", "YYYY-MM-DD").format();  };  $scope.today();
        

        【讨论】:

        • 看起来有点矫枉过正,考虑到 moment.js 是一个 3k 线库
        猜你喜欢
        • 2015-05-21
        • 2013-01-02
        • 2020-09-28
        • 2015-11-23
        • 2012-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-22
        相关资源
        最近更新 更多