2011-03-28 7 views
4

많은 게시물에 관계없이 나는 여전히 내 코드에서 마법을 읽었습니다. 나는 dbx ('2011-03-30 00 : 00 : 00.000')에 DateTime 값을 가지고 있는데, asp.net/mvc 페이지에서 검색 할 때 일부 자바 스크립트는 그것을 읽고 비교해야한다. 코드의DateTime JavaScript 대 C#

<% 
DateTime unixTimeOffset = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
DateTime testDate = new DateTime(2011,03,30,0,0,0,0); 
%> 
<%= (testDate - unixTimeOffset).TotalMilliseconds %> 
... 

마지막 문자열이 나에게이 값을 제공합니다 다음에 마법

val myDate = new Date(1301443200000); 

그리고 MyDate가 2011 화 3월 29일이다 : 나는 자바 스크립트를 읽으려고 할 때 1301443200000 을 내가 가진 20:00:00 GMT-0400 (동부 일광 절약 시간제) {} 그러나 3 월 30 일에는 그렇지 않습니다.

현지 시간으로 GMT-4를 참조하는 날짜를 제공한다는 점을 이해하지만이를 독립적으로 유지하기위한 해결책은 무엇입니까? 아이디어가 있으십니까? 감사. C#을 관련 날짜

답변

1

귀하의 코드가 정확한지. Tue Mar 29 2011 20:00:00 GMT-0400Wed Mar 30 2011 00:00:00 GMT+0000과 같은 시점이기 때문에 myDate 변수는 올바른 날짜를 보유합니다. 내 추측으로는 컴퓨터 시간대이므로 전자를 볼 수 있습니다. 날짜를 UTC로 보려면 myDate.toUTCString()을 사용하십시오.

6

:

당신은 시간 영역의 독립적 인 모든 일을 계속 할 수 DateTime.ToUniversalTime().UTCNow()를 사용하는 것이 좋습니다. 자바 스크립트 관련 날짜

DateTime date = DateTime.UTCNow(); 

:

자바 스크립트뿐만 아니라 당신에게 표준시를 얻을해야 UTC Method 있습니다.

//Declaration 
var date = new Date(Date.UTC(YYYY,MM,DD)); 

//Use 
var newDate = date.toUTCString(); 

희망이 도움이 :)

+0

'new Date (Date.UTC (1301443200000))'는 방화 광에서'잘못된 날짜 {}'를 반환합니다. 그것은 유효한 논쟁이 아닙니다. 이것은 서명입니다 : Date.UTC (year, month [, date [, hrs [, min [, sec], [ms]]]])' –

+0

@lwburk - 명확하게 혼란스러워 선언하고 사용합니다 :) Thanks! –

+0

필자는 JavaScript 솔루션이 많은 도움이된다고 생각하지 않습니다. 실제로 필요한 것은'YYYY','MM' 및'DD'이므로 입력 *으로 사용할 수 없기 때문에 *산출*. –

2

클라이언트에서 오프셋 시간대를 확인하고 서버에서 값이 추가합니다. 이처럼 :

var serverOffset = 1301443200000; 
var localOffset = myDate.getTimezoneOffset() * 60 * 1000; 
var myDate = new Date(serverOffset + localOffset); 
console.log(myDate); // Wed Mar 30 2011 00:00:00 

Tue Mar 29 2011 20:00:00 GMT-0400 (Eastern Daylight Time)이 UTC에 원래 날짜 같은 시간에 같은 지점입니다 유의하시기 바랍니다. 이 메서드는 시간이 인 새 지점을 나타내는 새 날짜를 만듭니다. 그러나 동일한 날짜 값을 표시하려는 경우이 메서드는 트릭을 수행합니다.

또는, UTC에 원래 날짜를 인쇄 할 수 Date의 UTC의 방법을 사용할 수 있습니다

function pad(num) { 
    return ("0" + num).slice(-2); 
} 

function formatDate(d) { 
    return [d.getUTCFullYear(), 
      pad(d.getUTCMonth() + 1), 
      pad(d.getUTCDate())].join("-") + "T" + 
      [pad(d.getUTCHours()), 
      pad(d.getUTCMinutes()), 
      pad(d.getUTCSeconds())].join(":") + "Z"; 
} 

formatDate(new Date(1301443200000)); 

출력 :

"2011-03-30T00:00:00Z"