Javascript 将未来日期添加到从json响应获取的日期
我从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
$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')代码>