자바 펼쳐 날짜에 대한 DateTime
Stackoverflow에 대한 또 다른 답변은 Javascript 날짜에서 .net DateTime으로의 변환입니다.
long msSinceEpoch = 1260402952906; // Value from Date.getTime() in JavaScript
return new DateTime(1970, 1, 1) + new TimeSpan(msSinceEpoch * 10000);
그러나 그 존재하는 방법? DateTime에서 Javascript 날짜까지?
시험 :
return DateTime.Now.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds
편집 : 진정한 UTC가 더 좋지만 일관성이 있어야합니다.
return DateTime.UtcNow
.Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
.TotalMilliseconds;
두 개의 날짜가 있다고 말하는 것이 중요하지 않습니다.
JavaScript Date 생성자는 Unix epoch (1970 년 1 월 1 일 00:00:00 UTC) 이후의 밀리 초 수를 허용합니다. .Net DateTime 개체를 JavaScript 날짜로 변환하는 C # 확장 방법은 다음과 가변적입니다.
public static class DateTimeJavaScript
{
private static readonly long DatetimeMinTimeTicks =
(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks;
public static long ToJavaScriptMilliseconds(this DateTime dt)
{
return (long)((dt.ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 10000);
}
}
자바 펼쳐 사용 :
var dt = new Date(<%= DateTime.Today.ToJavaScriptMilliseconds() %>);
alert(dt);
함께 Moment.js 사용
var jsDate = moment(netDateTime).toDate();
netDateTime
날짜 시간는 변수 어디에 직렬화되어 있습니까 "/Date(1456956000000+0200)/"
?
작업에서 시도 할 수 있습니다.
return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
그리고 이것은 Ajax 성공에서 :
success: function (resultDateString) {
var date = new Date(resultDateString);
}
또는 귀하의 뷰에서 : (Javascript + C #)
var date = new Date('@DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")');
이 트릭을 수행해야합니다.
date.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds
나는 조금이라도 늦었다는 것을 알고 있습니다. 거기에 독립이기를 원할 때 날짜를 처리하기 위해 생각해 낸 해결이 있습니다. 기본적으로 모든 것을 UTC로 변환하는 작업이 포함됩니다.
자바 펼쳐에서 서버로 :
시간이 지남에 따라 날짜를 보냅니다.
var d = new Date(2015,0,1) // Jan 1, 2015
// Ajax Request to server ...
$.ajax({
url: '/target',
params: { date: d.getTime() - (d.getTimezoneOffset() * 60 * 1000) }
});
그런 다음 서버는 1420070400000을 수신합니다.
서버 측에서 해당 epoch 값을 datetime 생성로 변환합니다.
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(epoch);
이 시점에서 날짜는 사용자가 제공 한 날짜 / 시간입니다. 사실상 UTC입니다.
다른 길로 가기 :
서버가 데이터베이스에서 데이터를 찾을 때 (아마도 UTC로) 차이를 시대로 가져옵니다 (두 날짜 개체가 모두 로컬 또는 UTC인지 확인).
long ms = (long)utcDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
또는
long ms = (long)localDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local)).TotalMilliseconds;
자바 스크립트가이 값을 받으면 새 날짜 개체를 만듭니다. 그러나이 날짜 객체는 현지 시간으로 간주되므로 현재 시간대로 오프셋해야합니다.
var epochValue = 1420070400000 // value pulled from server.
var utcDateVal = new Date(epochValue);
var actualDate = new Date(utcDateVal.getTime() + (utcDateVal.getTimezoneOffset() * 60 * 1000))
console.log(utcDateVal); // Wed Dec 31 2014 19:00:00 GMT-0500 (Eastern Standard Time)
console.log(actualDate); // Thu Jan 01 2015 00:00:00 GMT-0500 (Eastern Standard Time)
내가 아는 한, 이것은 시간대에 독립적 인 날짜를 표시해야하는 모든 시간대에서 작동합니다.
이 방법은 저에게 효과적입니다.
public sCdateToJsDate(cSDate: any): Date {
// cSDate is '2017-01-24T14:14:55.807'
var datestr = cSDate.toString();
var dateAr = datestr.split('-');
var year = parseInt(dateAr[0]);
var month = parseInt(dateAr[1])-1;
var day = parseInt(dateAr[2].substring(0, dateAr[2].indexOf("T")));
var timestring = dateAr[2].substring(dateAr[2].indexOf("T") + 1);
var timeAr = timestring.split(":");
var hour = parseInt(timeAr[0]);
var min = parseInt(timeAr[1]);
var sek = parseInt(timeAr[2]);
var date = new Date(year, month, day, hour, min, sek, 0);
return date;
}
면도기와 함께 MVC를 사용하는 경우
----- 면도기 / C #
var dt1 = DateTime.Now.AddDays(14).Date;
var dt2 = DateTime.Now.AddDays(18).Date;
var lstDateTime = new List<DateTime>();
lstDateTime.Add(dt1);
lstDateTime.Add(dt2);
--- 자바 스크립트
$(function() {
var arr = []; //javascript array
@foreach (var item in lstDateTime)
{
@:arr1.push(new Date(@item.Year, @(item.Month - 1), @item.Day));
}
- 1 : C #으로 목록을 만들고 채우기
- 2 : 자바 스크립트에서 배열 만들기
- 3 : 면도기를 사용하여 목록 반복
- 4 : @ :를 사용하여 js로 다시 전환하고 @를 사용하여 C #으로 전환합니다.
- 5 : js의 월 번호를 수정하기위한 월의 -1.
행운을 빕니다
<input type="hidden" id="CDate" value="<%=DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")%>" />
날짜를 JS 날짜 (모든 숫자)로 변환하려면 :
var JSDate = $("#CDate").val();
JSDate = Date.parse(JSDate);
또 다른 늦은 답변이지만 여기에 누락되었습니다. /Date(1425408717000)/
자바 스크립트에서 직렬화 된 변환을 처리 하려면 다음을 호출하면됩니다.
var cSharpDate = "/Date(1425408717000)/"
var jsDate = new Date(parseInt(cSharpDate.replace(/[^0-9 +]/g, '')));
출처 : amirsahib
참고 URL : https://stackoverflow.com/questions/2404247/datetime-to-javascript-date
'IT' 카테고리의 다른 글
git bash 명령 줄 완성을 구성하는 방법은 무엇입니까? (0) | 2020.08.27 |
---|---|
printf에서 Java의 "% n"은 어떻게? (0) | 2020.08.26 |
내 PowerShell 펼쳐가 실행되지 않는 이유는 무엇입니까? (0) | 2020.08.26 |
JavaScript에서 DIV 너비 및 높이 설정 (0) | 2020.08.26 |
Scala의 리소스 폴더에서 파일을 읽는 방법은 무엇입니까? (0) | 2020.08.26 |