Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将未来日期添加到从json响应获取的日期_Javascript_Json_Angularjs - Fatal编程技术网

Javascript 将未来日期添加到从json响应获取的日期

Javascript 将未来日期添加到从json响应获取的日期,javascript,json,angularjs,Javascript,Json,Angularjs,我从json回复中得到了一个日期。我可以筛选日期以确认它是实际日期类型,但我无法将未来日期设置为它。下面是我的片段 $rootScope.until= response.data.data.dateReceived; //return future date // var targetDate = new Date(); $rootScope.until.setDate($rootScope.until + 60);//adding 60 days but cannot // So you

我从json回复中得到了一个日期。我可以筛选日期以确认它是实际日期类型,但我无法将未来日期设置为它。下面是我的片段

$rootScope.until= response.data.data.dateReceived;

//return future date
// var targetDate = new Date();
$rootScope.until.setDate($rootScope.until + 60);//adding 60 days but cannot


// So you can see the date we have created
$rootScope.until = $filter("date") ($rootScope.until), 'EEEE, MMMM d, y');

请告诉我如何添加未来日期这里似乎有两个不同的错误

  • 您正试图在
    编号
    上使用
    日期
    函数
  • 函数
    Date#setDate()
    将日期作为其参数 月份,而不是时间戳本身

  • 日期与编号 问题 如果使用
    new Date(response.data.data.dateReceived)
    将收到的毫秒数转换为
    Date
    数据类型,则可以访问
    setDate()等方法

    然而,在当前代码中,您试图对JavaScript中的内容执行
    setDate()
    ,这只是一个普通数字。它也可以是
    -1
    ,因为JavaScript不知道您的数字除了数字值之外还有什么意义

    解决方案 由于您的输入数据以毫秒为单位(这是您在注释中指出的事实),因此实现这一点的最简单方法就是在初始时间戳中添加毫秒,如下所示:

    const六十天=5184e6//1000毫秒/秒*3600秒/小时*24小时/天*60天
    $rootScope.until=response.data.data.dateReceived+六十天;
    
    只需确保该值是数字,而不是字符串,否则将执行串联而不是加法


    设置日期参数 问题 如果您确实有一个数据类型为
    Date
    (见上文)的变量,则可以访问以下方法。但是,此方法的参数与代码假设的参数略有不同

    解决方案
    setDate()
    接受自月初以来的天数作为参数。如果要添加天数,可以执行以下操作:

    $rootScope.till=新日期(response.data.data.dateReceived);
    $rootScope.until.setDate($rootScope.until.getDate()+60);
    

    此代码将获取日期的月份,然后将该值加上60天。它将自动处理当月的更改。

    这里似乎有两个不同的错误

  • 您正试图在
    编号
    上使用
    日期
    函数
  • 函数
    Date#setDate()
    将日期作为其参数 月份,而不是时间戳本身

  • 日期与编号 问题 如果使用
    new Date(response.data.data.dateReceived)
    将收到的毫秒数转换为
    Date
    数据类型,则可以访问
    setDate()等方法

    然而,在当前代码中,您试图对JavaScript中的内容执行
    setDate()
    ,这只是一个普通数字。它也可以是
    -1
    ,因为JavaScript不知道您的数字除了数字值之外还有什么意义

    解决方案 由于您的输入数据以毫秒为单位(这是您在注释中指出的事实),因此实现这一点的最简单方法就是在初始时间戳中添加毫秒,如下所示:

    const六十天=5184e6//1000毫秒/秒*3600秒/小时*24小时/天*60天
    $rootScope.until=response.data.data.dateReceived+六十天;
    
    只需确保该值是数字,而不是字符串,否则将执行串联而不是加法


    设置日期参数 问题 如果您确实有一个数据类型为
    Date
    (见上文)的变量,则可以访问以下方法。但是,此方法的参数与代码假设的参数略有不同

    解决方案
    setDate()
    接受自月初以来的天数作为参数。如果要添加天数,可以执行以下操作:

    $rootScope.till=新日期(response.data.data.dateReceived);
    $rootScope.until.setDate($rootScope.until.getDate()+60);
    

    此代码将获取日期的月份,然后将该值加上60天。它将自动处理当月的更改。

    您从JSON数据中获得的日期-它是什么格式?毫秒?ISO-8601时间戳?这是日期>>>40508623308(毫秒)这应该是1971年的日期吗?如果不是,我不知道你用的是什么格式。理解输入数据的格式对于解决任何问题都是至关重要的。是的,它是1971年的毫秒格式—您从JSON数据中获得的日期—它是什么格式?毫秒?ISO-8601时间戳?这是日期>>>40508623308(毫秒)这应该是1971年的日期吗?如果不是,我不知道你用的是什么格式。理解输入数据的形式对于解决任何问题都是至关重要的。是的,这是1971年的米利秒format@Float您应该能够像这样使用AngularJS日期过滤器:
    $filter('date')($rootScope.until,'EEEE,MMMM d,y')
    @Float您应该能够像这样使用AngularJS日期过滤器:
    $filter('date')($rootScope.until,'EEEE,MMMM d,y')