背景:

服务项目已有服务期起止时间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(, '')
,
ServiceToDateM = dtNewTo.Minute.ToString().PadLeft(, '')
}, 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>

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

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

    最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函 ...

  2. 九度OJ 1096:日期差值 (日期计算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8138 解决:2752 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据, ...

  3. 题目1096:日期差值(a-b=(a-c)-(b-c))

    http://ac.jobdu.com/problem.php?pid=1096 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每 ...

  4. Android 获取当前日期距离过期时间的日期差值的完整方法直接使用

    /*** * 获取当前日期距离过期时间的日期差值 * @param endTime * @return */public String dateDiff(String endTime) { Strin ...

  5. 九度oj 题目1096:日期差值

    题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行, ...

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

      使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src=& ...

  7. Mysql 2条记录 差值计算

    1 表结构 2:  其实 是2个相同的 表根据rownum= rownum-1 来计算,所以先了解单个表的查询 附上SQL: #查询出1天的数据升序 ) as rownum, info.equipme ...

  8. 关于MVC接收Ajax调用无法访问的问题

    例如:下面代码有两个int类型的参数,如果Ajax调用时没有在data属性中为其赋值,AJAX会出500异常. public JsonResult GetList(int pageIndex, int ...

  9. 关于Java中计算日期差值不准确问题

    1.字符串日期相减 如:2016-4-1,必须先将此字符串转成Date对象,并且, 格式必须为:yyyy—MM—dd  HH:mm:ss. 如果不转就直接计算(2016-4-1)两个这样的日期,则误差 ...

随机推荐

  1. 逼近法(例 poj3208、poj1037)

    ​ 逼近法是一种很奇妙的算法,以为"逼近"这一种思想在很多的算法中都有体现.诸如:像我们的二分答案,不断地排除决策集合的一半以接近我们的最终答案:我们的树上倍增求 \(LCA\) ...

  2. NEU 1681: The Singles

    题目描述 The Signals’ Day has passed for a few days. Numerous sales promotion campaigns on the shopping ...

  3. xunit输出output到控制台

    1.https://xunit.github.io/docs/capturing-output 里面似乎提到2个方法,第二个方法还需要在配置文件中添加appSetting 这里采用第一种方法, 1.添 ...

  4. Mysql语句示例

    Mysql语句示例 最常用 sql 语句总结 前言 Mysql 是数据库开发使用的主要平台之一.sql 的学习掌握与使用是数据库开发的基础,此处展示详细sql 语句的写法,及各种功能下的 sql 语句 ...

  5. ssl原理及应用

    今天学习网络通信,看到使用ssl(Secure Sockets Layer)进行加密,由于对ssl只是有些概念上的了解,对于具体应用原理.过程和如何使用不慎了解,于是学习了一番,总结如下: 1. 为什 ...

  6. codeforces round 421 div2 补题 CF 820 A-E

    A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef lon ...

  7. 让ubuntu16.04开机进入命令行模式

    使用Ubuntu时,有时候我们不想开机进入桌面,想直接进入命令行,这样启动的比较快, 1.首先我们修改grub文件,改为如图所示: sudo gedit  /etc/default/grub 改完之后 ...

  8. 任务37:生成 JWT Token

    实现给用户办法token 默认是可以访问valuesController的,返回的状态是200 http://localhost:5429/api/values 返回的状态码是200 把ValuesC ...

  9. Linux2.6 内核中结构体初始化(转载)

    转自:http://hnniyan123.blog.chinaunix.net/uid-29917301-id-4989879.html 在Linux2.6版本的内核中,我们经常可以看到下面的结构体的 ...

  10. iOS Button选中与取消

    /** * 是否点击 */ @property (nonatomic ,assign) BOOL selected; /** *  button 点击事件选中取消选中 */ - (void)handl ...