IT

자바 펼쳐 날짜에 대한 DateTime

lottoking 2020. 8. 26. 08:11
반응형

자바 펼쳐 날짜에 대한 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

반응형