社区
JavaScript
帖子详情
时间计算的操作,比较棘手
sonic616
2002-07-19 07:06:29
传入一个时间变量,把这个时间以月为单位加N,传出来
也就是在js里做时间计算,比如2002年7月19号,加上两个月,应该得到2002年9月19号
不知js可不可以方便实现这种计算,看了很多资料实在有些无奈
其实只是想实现在本页面内动态的时间计算,望各位大拿不吝赐教啊,呵呵
...全文
102
9
打赏
收藏
时间计算的操作,比较棘手
传入一个时间变量,把这个时间以月为单位加N,传出来 也就是在js里做时间计算,比如2002年7月19号,加上两个月,应该得到2002年9月19号 不知js可不可以方便实现这种计算,看了很多资料实在有些无奈 其实只是想实现在本页面内动态的时间计算,望各位大拿不吝赐教啊,呵呵
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sonic616
2002-07-25
打赏
举报
回复
正是,其实asp里的那个时间函数就是这种结果,的确有点儿意思,但是麻烦
================================================================
我存在
seabell
2002-07-25
打赏
举报
回复
<script>
function newdate(obj)
{
startdate=document.all.sdate.value;
newmonth=parseInt(startdate.split("/")[1])+parseInt(obj.value);
if(newmonth>12)
enddate=(parseInt(startdate.split("/")[0])+parseInt(newmonth/12))+"/"+(newmonth%12)+"/"+startdate.split("/")[2];
else
enddate=startdate.split("/")[0]+"/"+newmonth+"/"+startdate.split("/")[2];
while((startdate.split("/")[2]>28)&&!strDate(enddate))
{
enddate=enddate.split("/")[0]+"/"+enddate.split("/")[1]+"/"+(parseInt(enddate.split("/")[2])-1);
}
alert(enddate);
}
function strDate(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
return newStr==str
}
</script>
startdate:<input type=text name=sdate value="2002/5/31" readOnly><br>
addmonth:<input type=text name=addmonth value=9 onblur=newdate(this)>
seabell
2002-07-25
打赏
举报
回复
<script>
function newdate(obj)
{
startdate=document.all.sdate.value;
newmonth=parseInt(startdate.split("/")[1])+parseInt(obj.value);
if(newmonth>12)
enddate=(parseInt(startdate.split("/")[0])+parseInt(newmonth/12))+"/"+(newmonth%12)+"/"+startdate.split("/")[2];
else
enddate=startdate.split("/")[0]+"/"+newmonth+"/"+startdate.split("/")[2];
while((startdate.split("/")[2]>28)&&!strDate(enddate))
{
enddate=enddate.split("/")[0]+"/"+enddate.split("/")[1]+"/"+(parseInt(enddate.split("/")[2])-1);
}
alert(enddate);
}
function strDate(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
return newStr==str
}
</script>
startdate:<input type=text name=sdate value="2002/5/31" readOnly><br>
addmonth:<input type=text name=addmonth value=9 onblur=newdate(this)>
seabell
2002-07-25
打赏
举报
回复
<script>
function newdate(obj)
{
startdate=document.all.sdate.value;
newmonth=parseInt(startdate.split("/")[1])+parseInt(obj.value);
if(newmonth>12)
enddate=(parseInt(startdate.split("/")[0])+parseInt(newmonth/12))+"/"+(newmonth%12)+"/"+startdate.split("/")[2];
else
enddate=startdate.split("/")[0]+"/"+newmonth+"/"+startdate.split("/")[2];
while((startdate.split("/")[2]>28)&&!strDate(enddate))
{
enddate=enddate.split("/")[0]+"/"+enddate.split("/")[1]+"/"+(parseInt(enddate.split("/")[2])-1);
}
alert(enddate);
}
function strDate(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
return newStr==str
}
</script>
startdate:<input type=text name=sdate value="2002/5/31" readOnly><br>
addmonth:<input type=text name=addmonth value=9 onblur=newdate(this)>
Reve
2002-07-23
打赏
举报
回复
To sonic616(sonic):
7月31日+(2个月)=9月30日
7月30日+(2个月)=9月30日
12月31日+(2个月)=2月28日/2月29日
12月30日+(2个月)=2月28日/2月29日
12月29日+(2个月)=2月28日/2月29日
12月28日+(2个月)=2月28日
这样的话,有趣,也就是定义的映射,非一一映射也,或者说就根本不是映射。呵呵
jo_yoko
2002-07-23
打赏
举报
回复
这样的话,如果只是用js自己的函数,恐怕是实现在起来有点麻烦
不如自己编一个js的dateadd函数,这样不就行了吗
sonic616
2002-07-23
打赏
举报
回复
谢谢thinkover(至真宝),vbscript函数强大当然不错,但是最好用js实现啊
孟子,你好,谢谢你的思路,我指的就是真正加2两个,比如你说的7月31号,加上两个月,要得出来9月30号的(与vbscript的那个dateadd函数要效果一样)
JavaCoffee
2002-07-20
打赏
举报
回复
给你个例子:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 2</title>
</head>
<body>
<form>
<p>原来的日期:
<input type="text" name="olddate" size="20" onblur="if(this.value.match( /\d{4}-\d{1,2}-\d{1,2}/)!=this.value){alert('请输入正确日期');this.focus();this.select();}">
<br>加上两个月的日期:<input type="text" name="newdate" size="20"> <input type="button" value=" 计 算 " name="btncompute"></p>
</form>
<script language="vbscript">
sub btncompute_onclick
dim datevalue,yearpart,monthpart,daypart
datevalue=document.all.olddate.value
yearpart=year(datevalue)
monthpart=month(datevalue)
daypart=day(datevalue)
newdate=dateadd("m",2,datevalue)
document.all.newdate.value=newdate
msgbox newdate
end sub
</script>
</body>
</html>
可以根据自己的需要适当的完善。
孟子E章
2002-07-19
打赏
举报
回复
你是加2月还是加2数字??
7月31加2月没有9月31呀。
你可以把时间换算成毫秒,加上2月的毫秒再求时间
iOS开发中的神兵利器
【课程概括】包含306节超多互动教程,基于新版的Swift和Xcode。手把手讲解大量实用的iOS开发开源类库:BonMot、PKHUD、DZNEmptyDataSet、Alamofire、Moya、Promise、Kingfisher、SnapKit、组件化编程、RxSwift响应式编程、Lottie动画、Hero转场动画、app主题更换、强大的幻灯片、GPUImage图像视频处理、Realm数据库、二维码创建和读取、模拟网络fake数据、自动化压力测试。手把手学习iOS开发中的强大的第三方类库,详细讲解Github中的热门的iOS开发开源项目。助您快速、优雅地解决iOS开发中
棘手
的业务需求!【课程特点】 1、代码逐行讲解2、语言简洁、精练、瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的
时间
3、完美贴心的
操作
提示,让您的眼睛始终处于
操作
的焦点位置,不用再满屏找光标4、每个视频都很短小精悍,即方便于您的学习和记忆,也方便日后对功能的检索 【福利来了】获取306节所有课程源码及加入学习群!
工作中的十大
棘手
难题
最近一两年的时候,写代码的
时间
逐渐减少,除了负责几个小系统之外,更多的
时间
用在解决客户问题上。接触的问题多了,发现真的是什么样的问题都有可能发现在客户环境上,当然,这不能一味地说系统的问题。系统确实...
面试常问:你在项目中遇到了哪些
比较
棘手
的问题?怎么解决的?
面试常问:你在项目中遇到了哪些
比较
棘手
的问题?怎么解决的?
三道
计算
时间
复杂度的题目
三道小题初看觉得很简单,但是仔细一分析,a、b小题里面的内循环
操作
次数是和外层的n、i值有关,并不是简单的
操作
N次,很久没有算过
时间
复杂度了,稍微感到有点
棘手
。 public static void fa(int N) { int sum = 0...
时间
同步服务器:
时间
同步的三种方式
在集群中同步
时间
有着十分重要的作用,负载均衡集群或高可用集群如果
时间
不一致,在服务器之间的数据误差就会很大,寻找数据便会成为一件
棘手
的事情。备份是一个合格的运维工程师的基本功,若是
时间
无法同步,那么就...
JavaScript
87,910
社区成员
224,616
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章