MVC 下 ajax调用 日期差值计算

背景:

服务项目已有服务期起止时间From-To

现在要根据用户输入的新的起始时间, 和该服务期的原有区间值, 计算出新的服务期截止时间

即 NewServiceToDateTime = NewServiceFromDateTime + ( OldServiceToDateTime - OldServiceFromDateTime)

本示例的效果:

1.日期转换 及 差值计算

2.mvc 下 ajax 调用及赋值

相关代码如下:

后台Controller下Action处理

public DateTime GetDateTimeParseStr(string strDate,string strDateH,string strDateM) {
            DateTime dt = new DateTime();
            if (strDate.Contains("/"))
            {
                dt = DateTime.ParseExact(strDate, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);

            }
            else if (strDate.Contains("-"))
            {
                dt = DateTime.ParseExact(strDate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
            }
            else
            {
                dt = DateTime.Parse(strDate);
            }

            if (!string.IsNullOrEmpty(strDateH)) {
                dt = dt.AddHours(int.Parse(strDateH));
            }

            if (!string.IsNullOrEmpty(strDateM))
            {
                dt = dt.AddMinutes(int.Parse(strDateM));
            }

            return dt;
        }

        public DateTime GetNewToDateTime(DateTime from, DateTime to, DateTime newFrom)
        {
            TimeSpan tsFrom = new TimeSpan(from.Ticks);
            TimeSpan tsTo = new TimeSpan(to.Ticks);
            TimeSpan tsNewFrom = new TimeSpan(newFrom.Ticks);

            DateTime dtNewTo = newFrom.AddTicks(tsTo.Subtract(tsFrom).Ticks);

            return dtNewTo;
        }

        public JsonResult GetNewToDateTimeJson(string strFrom,string strFromH,string strFromM
            ,string strTo,string strToH ,string strToM,
            string strFromNew, string strFromHNew, string strFromMNew)
        {

            try
            {
                DateTime from = GetDateTimeParseStr(strFrom, strFromH,strFromM);
                DateTime to = GetDateTimeParseStr(strTo, strToH, strToM);
                DateTime newFrom = GetDateTimeParseStr(strFromNew, strFromHNew, strFromMNew); 

                DateTime dtNewTo = GetNewToDateTime(from, to, newFrom);

                return Json(new
                {
                    Success = true
                    ,
                    ServiceToDateTitle = dtNewTo.FormatDateAndTimeNoSecond()
                    ,
                    ServiceToDate = dtNewTo.ToString("yyyy-MM-dd")
                    ,
                    ServiceToDateH = dtNewTo.Hour.ToString().PadLeft(2, ‘0‘)
                    ,
                    ServiceToDateM = dtNewTo.Minute.ToString().PadLeft(2, ‘0‘)
                }, JsonRequestBehavior.AllowGet);
            }
            catch (Exception)
            {
                return Json(new
                {
                    Success = false
                }, JsonRequestBehavior.AllowGet);
            }

        }

前台aspx的Ajax调用

<script type="text/javascript">

    function changeServicePeriod() {
        var dateFrom = $("#ServiceFromDate").val();
        var datefromHH = $("#ServiceFromDateH").val();
        var dateFromMM = $("#ServiceFromDateM").val();

        if (dateFrom != "") {
            var item = eval("(" + $("#itemdata").val() + ")");

            var dateFromOld = item.ServiceFromDate;
            var dateFromHHOld = item.ServiceFromDateH;
            var dateFromMMOld = item.ServiceFromDateM;

            var dateToOld = item.ServiceToDate;
            var dateToHHOld = item.ServiceToDateH;
            var dateToMMOld = item.ServiceToDateM;

            var url = ‘<%=Url.Action("GetNewToDateTimeJson", "ServiceItem") %>‘;
            $.ajax({
                type: "get",
                async: false,
                url: url,
                data: {
                    strFrom: dateFromOld
                  , strFromH: dateFromHHOld
                  , strFromM: dateFromMMOld
                  , strTo: dateToOld
                  , strToH: dateToHHOld
                  , strToM: dateToMMOld
                  , strFromNew: dateFrom
                  , strFromHNew: datefromHH
                  , strFromMNew: dateFromMM
                },
                dataType: "json",
                success: function (jsonData, textStatus) {
                    if (jsonData.Success) {
                        $("#ServiceToDateTitle").val(jsonData.ServiceToDateTitle);
                        $("#ServiceToDate").val(jsonData.ServiceToDate);
                        $("#ServiceToDateH").val(jsonData.ServiceToDateH);
                        $("#ServiceToDateM").val(jsonData.ServiceToDateM);
                    } else {
                        $("#ServiceToDate").val("");
                        $("#ServiceToDateTitle").val("");
                        $("#ServiceToDateH").val(datefromHH);
                        $("#ServiceToDateM").val(dateFromMM);
                    }
                },
                complete: function (XMLHttpRequest, textStatus) { },
                error: function () { }
            });        // end ajax

        } else {
            $("#ServiceToDate").val("");
            $("#ServiceToDateTitle").val("");
            $("#ServiceToDateH").val(datefromHH);
            $("#ServiceToDateM").val(dateFromMM);
        }

    };

</script>
时间: 2024-10-09 05:49:13

MVC 下 ajax调用 日期差值计算的相关文章

Hibernate中HQL的日期差值计算,可计算相差多少秒

最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函数 JPAQL HQL CURRENT_DATE() 返回数据库当前日期 CURRENT_TIME() 时间 时间函数 JPAQL HQL CURRENT_TIME() 返回数据库当前时间 SECOND(d) 从日期中提取具体秒 时间函数 HQL SECOND(时间字段) 空的时候返回null MI

日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 来源: 2009年上海交通大学计算机研究生机试真题 #include <iostream> using namespace std; #define ISYEAR(x) x%100 != 0 && x%4

题目1096:日期差值 (2009年上海交通大学计算机研究生机试真题)

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 代码如下: #include "stdio.h" int dayOfMonth[13][2]={ 0,0, 31,31, 28,29, 31,31, 30,30, 31,31, 30,30, 31,31, 31,

九度oj 题目1096:日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <string> 5 #include

九度OJ 1096 日期差值

题目1096:日期差值 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5143 解决:1789 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #include<string.h> #include<s

九度题目1096:日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #include<algorithm> #include<iostream> #include<stack> #include<vector&

题目1096:日期差值 Java/C++

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 Java AC 代码: import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[]

1096.日期差值

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 #include<stdio.h> #define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0?1:0 int dayofmonth[13][2]= { 0,0, 3

asp.net mvc 使用Ajax调用Action 返回数据【转】

使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 2.在Controllers中书写前台Ajax需要调用的Action,比如: