【问题标题】:Daterangepicker moment() returns numbersDaterangepicker moment() 返回数字
【发布时间】:2017-09-10 06:59:55
【问题描述】:

我有一个 .cshtml,其中实现了 daterangepicker.js。此页面通过 ViewBag 从父页面获取日期范围(到日期、开始日期)。代码如下:

var _FromDate;
var _EndDate;

$(function () {
    var from1 = '@ViewBag.from_date';
    var from = from1.split("-");
    var f = new Date(from[0], from[1] - 1, from[2]);

    var to1 = '@ViewBag.to_date';
    var to = to1.split("-");
    var t = new Date(to[0], to[1] - 1, to[2]);

    var start = (f.getFullYear() + '-' + pad((f.getMonth() + 1), 2) + '-' + pad(f.getDate(), 2));
    var end = (t.getFullYear() + '-' + pad((t.getMonth() + 1), 2) + '-' + pad(t.getDate(), 2));

    function cb(start, end) {

        $('#reportrange span').html(start + ' . ' + end);
        var dateRange = $('#reportrange span').html();
        _FromDate = dateRange.substring(0, dateRange.indexOf('.'));
        _EndDate = dateRange.substring(dateRange.indexOf('.') + 1);
    };

    function pad(str, max) {
        str = str.toString();
        return str.length < max ? pad("0" + str, max) : str;
    }

    $('#reportrange').daterangepicker({
        startDate: start,
        endDate: end,
        locale: { format: "YYYY-MM-DD" },
        ranges: {
            'Today': [moment(), moment()],
            'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
            'Last 7 Days': [moment().subtract(6, 'days'), moment()],
            'Last 30 Days': [moment().subtract(29, 'days'), moment()],
            'This Month': [moment().startOf('month'), moment().endOf('month')],
            'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
        }
    }, cb);

    cb(start, end);

});

现在的问题是:运行页面时,daterangepicker 将日期返回为 a string of numbers

问题的原因是什么?我一步一步浏览了代码,我找不到问题。

感谢任何帮助!

【问题讨论】:

  • 你能不能 console.log 把 from1to1 的值粘贴到这里,就在它们各自的声明之后...
  • @ThirueswaranRajagopalan 给你:from1 显示 2017-09-10 和 to1 显示 2017-09-10(因为在上一页中我选择了“今天”,所以它显示 from1 和to1
  • 一切都好。它只是 ` $('#reportrange span').html(start + ' . ' + end);` startend 被转换为 unix 时间戳(毫秒) .
  • @ThirueswaranRajagopalan 好的,那我如何让它正常显示日期?
  • 将其作为答案发布...

标签: javascript jquery momentjs unix-timestamp daterangepicker


【解决方案1】:

你有一些不必要的代码,我做了一个重写 plunk https://embed.plnkr.co/G3xxp0HWPOoFYuF8u2qd/

 /* global variables to store your dates ..*/
var _FromDate;
var _EndDate;

$(function () {
  var _format = "YYYY-MM-DD";
  var start = moment('@ViewBag.from_date', _format); 
  var end = moment('@ViewBag.from_date', _format);

  /* update your display summary and your local variables... */
  function cb(start, end) {
    /* 
      storing the moment object. If case you post these values over to a server, defaulr ajax transforms into ISOstring.
      But in case it doesn't, your should  _FromDate = start.toISOString() or if u have a sppecific format start.format('{your format}') 
    */
    _FromDate = start;
    _EndDate = end;
    $('#reportrange span').html(start.format(_format) + ' - ' + end.format(_format));
  }

  $('#reportrange').daterangepicker({
    startDate: start,
    endDate: end,
    locale: { format: _format },
    ranges: {
      'Today': [moment(), moment()],
      'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
      'Last 7 Days': [moment().subtract(6, 'days'), moment()],
      'Last 30 Days': [moment().subtract(29, 'days'), moment()],
      'This Month': [moment().startOf('month'), moment().endOf('month')],
      'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
    }
  }, cb);

  cb(start, end);

});

【讨论】:

  • 我添加了代码,但现在我的代码隐藏中出现错误:将数据类型 nvarchar 转换为日期时出错。我将 _FromDate 和 _EndDate 变量发送到代码隐藏以从存储过程中获取数据。
  • _FromDate = start.format(_format) BTW,确实在评论中提到过...
猜你喜欢
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2021-11-20
  • 2017-10-06
  • 2021-09-13
  • 2010-11-18
  • 1970-01-01
相关资源
最近更新 更多