js日期处问题?

ycwww 2018-12-04 05:53:19
<form name=form1>

<input type="radio" name="IsOne" value="A">
原时间加
<input type="radio" name="IsOne" value="B">
从今日加 ||


<input type="radio" name="Adddate3" value="D">
加3个月
<input type="radio" name="Adddate3" value="E">
加6个月
<input type="radio" name="Adddate3" value="F">
加1年

原时间:<input type=text name=olddate id='olddate' value='2018-12-20'>

加后时间:
<input type=text name=newdate id='newdate'>

</form>

----------------
要求:
当 IsOne 选中一项 且 Adddate3 同时有选中的前提下,响应事件。

当选中从原时间加,且选中加3个月或者6个月,1年时,加后时间的value自动从 olddate 里对应增加。
如果是从今天加,那就从今天为基准备开始对应加时间,然后写在newdate里。

请问这段完整的js应该怎么写,谢谢。
...全文
172 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nayi_224 2018-12-04
  • 打赏
  • 举报
回复
            }
}

var temp = "";
var bracket_num = 0;
var axis = 0; //主要为处理2018-8-21这种特殊情况(2018-08-21为正常情况)
for(var i = 0; i < fmt.length; ){
var maxLength = 0;
var j = i + 1;
for(; j <= fmt.length; j++){
if(validFmt[fmt.substr(i, j - i)]){
maxLength = j - i;
}
}
if(maxLength){
axis += validFmt[fmt.substr(i, maxLength)](dateStr, i - axis, maxLength) || 0;
}else {
}
i += maxLength || 1;
}
//alert(year+"_"+ month+"_"+ day+"_"+ hour+"_"+ minute+"_"+ second);
var resultDate = new Date(year, month, day, hour, minute, second);
return resultDate;
}

var add_days = function(oldDate, addDays){
return new Date(oldDate.setDate(oldDate.getDate() + addDays));
}

var add_months = function(oldDate, addMonths){
return new Date(oldDate.setMonth(oldDate.getMonth() + addMonths));
}

var add_years = function(oldDate, addYesrs){
return new Date(oldDate.setFullYear(oldDate.getFullYear() + addYesrs));
}

return {
to_char: to_char,
to_date: to_date,
add_days: add_days,
add_months: add_months,
add_years: add_years
};

}();



</script>
<body>

<form name="form1">

<input type="radio" name="IsOne" value="A">
原时间加
<input type="radio" name="IsOne" value="B">
从今日加 ||


<input type="radio" name="Adddate3" value="D">
加3个月
<input type="radio" name="Adddate3" value="E">
加6个月
<input type="radio" name="Adddate3" value="F">
加1年

原时间:<input type="text" name="olddate" id='olddate' value='2018-12-20'>

加后时间:
<input type=text name=newdate id='newdate'>

</form>

</body>
</html>


字符限制真坑,还要分两次发
nayi_224 2018-12-04
  • 打赏
  • 举报
回复

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="../../js/jquery/jquery-2.1.0.js" type="text/javascript" charset="utf-8"></script>
</head>
<script type="text/javascript">
$(function() {
$("form[name='form1'] > input").click(function() {
if(!(jQuery("input[name='IsOne']:checked").length == 1
&& jQuery("input[name='Adddate3']:checked").length == 1))
return;

var now_date = jQuery("input[name='IsOne']:checked").val() == 'A' ? NayiUtil.to_date(jQuery("#olddate").val(), 'yyyy-mm-dd') : new Date();
var temp = jQuery("input[name='Adddate3']:checked").val();
var add_months = (temp == 'D' && 3) || (temp == 'E' && 6) || 12;
jQuery("#newdate").val(NayiUtil.to_char(NayiUtil.add_months(now_date, add_months), 'yyyy-mm-dd'));
})
})


var NayiUtil = function(){

var fill_zreo = function(str, length){
str = str.toString();
var l = str.length;
if (str.length >= length) {return str;}

for(var i = 0; i < length - l; i++){
str = "0" + str;
}
return str;
}


var to_char = function(dateObj, fmtSrc) {

if(!(dateObj instanceof Date)){
return "now, only Datetype is supported";
}

if(!dateObj || !fmtSrc){
return dateObj || "null";
}

var fmtModel = "";
var result = "";

var init = function(){
var res = "";
var inner_flag = false;

for(var i = 0; i < fmtSrc.length; i++){

if(fmtSrc.charAt(i) == "\\"){
res += fmtSrc.charAt(i) + fmtSrc.charAt(i + 1);
i += 1;
continue;
}

if(fmtSrc.charAt(i) == "("){
inner_flag = true;
}

res += inner_flag ? fmtSrc.charAt(i) : fmtSrc.charAt(i).toLowerCase();

if(fmtSrc.charAt(i) == ")"){
inner_flag = false;
}
}

fmtSrc = res;
fmtModel = fmtSrc.match(/fm/g);
fmtSrc = fmtSrc.replace(/fm/g, "");

}

init();

var validFmt = {
"yyyy": function() {
if(fmtModel == "fm"){
return dateObj.getFullYear();
}else {
return fill_zreo(dateObj.getFullYear(), 4);
}
},
"mm": function() {

if(fmtModel == "fm"){
return dateObj.getMonth() + 1;
}else {
return fill_zreo(dateObj.getMonth() + 1, 2);
}
},
"dd": function(){
if(fmtModel == "fm"){
return dateObj.getDate();
}else {
return fill_zreo(dateObj.getDate(), 2);
}
},
"yyy": function(){
if(fmtModel == "fm"){
return dateObj.getFullYear().toString().substr(-3);
}else {
return fill_zreo(dateObj.getFullYear().toString().substr(-3), 3);
}
},
"yy": function(){
if(fmtModel == "fm"){
return dateObj.getFullYear().toString().substr(-2);
}else {
return fill_zreo(dateObj.getFullYear().toString().substr(-2), 1);
}
},
"y": function(){
if(fmtModel == "fm"){
return dateObj.getFullYear().toString().substr(-1);
}else {
return fill_zreo(dateObj.getFullYear().toString().substr(-1), 1);
}
},
"y,yyy": function(){
var temp = fill_zreo(dateObj.getFullYear(), 4);
var yResult = temp.substr(0, 1) + "," + temp.substr(1, 3);
return yResult;
},
"hh": function(){
if(fmtModel == "fm"){
return (dateObj.getHours()) % 12;
}else {
return fill_zreo((dateObj.getHours()) % 12, 2);
}
},
"hh12": function(){
if(fmtModel == "fm"){
return (dateObj.getHours()) % 12;
}else {
return fill_zreo((dateObj.getHours()) % 12, 2);
}
},
"hh24": function(){
if(fmtModel == "fm"){
return dateObj.getHours();
}else {
return fill_zreo(dateObj.getHours(), 2);
}
},
"mi": function(){
if(fmtModel == "fm"){
return dateObj.getMinutes();
}else {
return fill_zreo(dateObj.getMinutes(), 2);
}
},
"ss": function(){
if(fmtModel == "fm"){
return dateObj.getSeconds();
}else {
return fill_zreo(dateObj.getSeconds(), 2);
}
},
"sssss": function(){
return dateObj.getSeconds() + dateObj.getHours() * 3600 + dateObj.getMinutes() * 60;
},
"ff": function(){
return dateObj.getMilliseconds();
},
"d": function(){
return fill_zreo(dateObj.getDay(), 1);
},
"ddd": function(){
var dateArr = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var date = new Date();
var day = date.getDate();
var month = date.getMonth(); //getMonth()是从0开始
var year = date.getFullYear();
var result = 0;
for ( var i = 0; i < month; i++) {
result += dateArr[i];
}
result += day;
if (month > 1 && (year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
result += 1;
}
return result;
},
"dc": function(){
return fill_zreo(dateObj.getDay() == 0 ? 7 : dateObj.getDay(), 1); //中文星期数字(js是0-6,0是星期日)
},
"day": function(){
var arr = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
return arr[dateObj.getDay()];
},
"q": function(){
var arr = ["1", "1", "1", "1",
"2", "2", "2", "2",
"3", "3", "3", "3",
"4", "4", "4", "4"]
return arr[dateObj.getMonth()];
},
"qcn": function(){
var arr = ["第一季度", "第一季度", "第一季度", "第一季度",
"第二季度", "第二季度", "第二季度", "第二季度",
"第三季度", "第三季度", "第三季度", "第三季度",
"第四季度", "第四季度", "第四季度", "第四季度"];
return arr[dateObj.getMonth()];
}

}



var temp = "";
var bracket_num = 0;
for(var i = 0; i < fmtSrc.length; ){
if(fmtSrc.charAt(i) == "("){
bracket_num++;
i++;
continue;
}
if(fmtSrc.charAt(i) == ")" && bracket_num > 0){
bracket_num--;
i++;
continue;
}
if(fmtSrc.charAt(i) == "\\"){
result += fmtSrc.charAt(i + 1);
i += 2;
continue;
}
if(bracket_num > 0){
result += fmtSrc.charAt(i);
i++;
continue;
}

var maxLength = 0;
var j = i + 1;
for(; j <= fmtSrc.length; j++){
if(validFmt[fmtSrc.substr(i, j - i)]){
maxLength = j - i;
}
}
if(maxLength){
result += validFmt[fmtSrc.substr(i, maxLength)]();
}else {
result += fmtSrc.charAt(i);
}
i += maxLength || 1;
}

return result;

}

var to_date = function(dateStr, fmt){

var dateStr_bk = dateStr;

var init = function(){
fmt = fmt.toLowerCase();
}()

var default_date = new Date();

var year = default_date.getFullYear();
var month = default_date.getMonth();
//var day = default_date.getDate();
var day = 1;
var hour = default_date.getHours();
var minute = default_date.getMinutes();
var second = default_date.getSeconds();;

var validFmt = {
"yyyy": function(str, s_index, length){
var temp = str.substr(s_index, length);
year = temp.match(/^[0-9]+/g)[0];
return temp.length - year.length;
},
"mm": function(str, s_index, length){
var temp = str.substr(s_index, length);
month = temp.match(/^[0-9]+/g)[0] - 1;
return temp.length - temp.match(/^[0-9]+/g)[0].length;
},
"dd": function(str, s_index, length){
var temp = str.substr(s_index, length);
day = temp.match(/^[0-9]+/g)[0];
return temp.length - day.length;
},
"hh24": function(str, s_index, length){
hour = str.substr(s_index, length);
},
"hh": function(str, s_index, length){
hour = str.substr(s_index, length);
},
"mi": function(str, s_index, length){
minute = str.substr(s_index, length);
},
"ss": function(str, s_index, length){
second = str.substr(s_index, length)

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧