起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1393|回复: 9

[结贴] 日期计算问题

[复制链接]

4

主题

32

帖子

74

积分

初级会员

Rank: 2

积分
74
QQ
发表于 2017-3-17 18:23:57 | 显示全部楼层 |阅读模式
我想做预付费系统,通过上次缴费截止日期加上变量得到本次交费截止日期。
lastDate是数据库里获取的值。
var months =this.comp('radio').val();
Date =justep.Date.increase(lastDate, months, 'm');
months输出的值正常,但并不是增加的年份,而是年份月份都在增加,而且混乱,没有规律,偶尔一次增加月份正常,但使用
var months =this.comp('radio').val();
Date =justep.Date.increase(lastDate, months, 'd');
增加的天数就是正常的,请问是什么问题?
发表于 2017-3-20 09:40:09 | 显示全部楼层
本帖最后由 liangyongfei 于 2017-3-20 09:46 编辑

月份需要注意的是!!默认从0开始的!!0表示1月  ,1表示2月!!依次类推
请先搞清楚这个问题所在!!

lastDate 的值是如何获取的??

http://doc.wex5.com/js-api-date/
根据API问题处理一下吧!
其他类型正常吗?

如图,本地测试没问题!
9N3NFGUW35VPNSOECF14MLG.png
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

4

主题

32

帖子

74

积分

初级会员

Rank: 2

积分
74
QQ
 楼主| 发表于 2017-3-20 13:47:15 | 显示全部楼层
liangyongfei 发表于 2017-3-20 09:40
月份需要注意的是!!默认从0开始的!!0表示1月  ,1表示2月!!依次类推
请先搞清楚这个问题所在!!

Date =justep.Date.increase(lastDate, months, 'm');
将months变量换成数字均没有问题,输出months的值也没有问题。
Date =justep.Date.increase(lastDate, 1, 'm');输出正确
回复 支持 反对

使用道具 举报

发表于 2017-3-20 14:54:37 | 显示全部楼层
rday 发表于 2017-3-20 13:47
Date =justep.Date.increase(lastDate, months, 'm');
将months变量换成数字均没有问题,输出months的值 ...

你的意思是months 这个data字段 不是int类型的吗??那当然不行!!API 要求必须是数字类型的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

4

主题

32

帖子

74

积分

初级会员

Rank: 2

积分
74
QQ
 楼主| 发表于 2017-3-20 15:08:35 | 显示全部楼层
liangyongfei 发表于 2017-3-20 14:54
你的意思是months 这个data字段 不是int类型的吗??那当然不行!!API 要求必须是数字类型的! ...

之前是string类型(但我用“d”,加天数确实正常的),然后我换成int类型了,还是不行。
回复 支持 反对

使用道具 举报

4

主题

32

帖子

74

积分

初级会员

Rank: 2

积分
74
QQ
 楼主| 发表于 2017-3-20 15:24:16 | 显示全部楼层
liangyongfei 发表于 2017-3-20 14:54
你的意思是months 这个data字段 不是int类型的吗??那当然不行!!API 要求必须是数字类型的! ...

我的数据库字段现在已经改为int类型,仍然不行,不知道是什么原因,我只好用justep.String.toInt()转换为整数,问题已经解决。
新的问题又出现了,我是要把截止日期加月份得到下次的截止日期,比如2016年12月31日为本次截止日期,如果加2,得到的是2017年3月3日。请问这如何解决啊!
回复 支持 反对

使用道具 举报

发表于 2017-3-20 16:14:43 | 显示全部楼层
rday 发表于 2017-3-20 15:24
我的数据库字段现在已经改为int类型,仍然不行,不知道是什么原因,我只好用justep.String.toInt()转换为 ...

justep.Date.increase(lastDate, 2, 'm');
还是使用这个方法啊!!

可以添加一个字段,表示下次的截止日期,并且设置计算规则绑定一个自定义js方法!!在js方法中获取截止日期的值 然后通过调用justep.Date.increase 将值return 即可!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

4

主题

32

帖子

74

积分

初级会员

Rank: 2

积分
74
QQ
 楼主| 发表于 2017-3-21 12:05:29 | 显示全部楼层
liangyongfei 发表于 2017-3-20 16:14
justep.Date.increase(lastDate, 2, 'm');
还是使用这个方法啊!!

我用的就是这样做的,使用justep.Date.increase(lastDate, 3, 'm');如果日期是2017年12月31日,如果加3,第一次增加日期为2017年3月31日(正确),但再增加一次3,得到的是2017年7月1日。因为6月没有31日,所以递增1天。这个如何解决!
回复 支持 反对

使用道具 举报

发表于 2017-3-21 14:35:14 | 显示全部楼层
rday 发表于 2017-3-21 12:05
我用的就是这样做的,使用justep.Date.increase(lastDate, 3, 'm');如果日期是2017年12月31日,如果加3, ...

这本身就查一天呀!其实本来就差不多!误差不大!!如果非要在零界点纠结!那就再判断一下日期!!如果 天 == 1 的话! 就把当前值再减一天,然后再返回赋值即可!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

4

主题

32

帖子

74

积分

初级会员

Rank: 2

积分
74
QQ
 楼主| 发表于 2017-3-21 15:00:50 | 显示全部楼层
liangyongfei 发表于 2017-3-21 14:35
这本身就查一天呀!其实本来就差不多!误差不大!!如果非要在零界点纠结!那就再判断一下日期!!如果  ...

谢谢!可以结贴了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-3 01:28 , Processed in 0.084152 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表