MVC 에서 ajax 호출 날짜 차이 계산
20791 단어 Ajax
서비스 항목 이미 서비스 기간 시작 시간 From - To
현재 사용자 가 입력 한 새로운 시작 시간 과 이 서비스 기간 의 기 존 구간 값 에 따라 새로운 서비스 기간 마감 시간 을 계산 해 야 합 니 다.
즉 NewServiceToDateTime = NewServiceFromDateTime + (OldServiceToDateTime - OldServiceFromDateTime)
이 예제 의 효과:
1. 날짜 변환 및 차액 계산
2. mvc 에서 ajax 호출 및 할당
관련 코드 는 다음 과 같 습 니 다.
백 스테이지 컨트롤 러 아래 액 션 처리
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>