자 바스 크 립 트 Serializer 를 사용 하여 날짜 형식 을 정렬 할 때 주의해 야 할 문제
6787 단어 JavaScript
자 바스 크 립 트 Serializer 를 사용 하여 날짜 형식 을 정렬 할 때 주의해 야 할 문제
JavaScriptSerializer 는 DateTime 을 직렬 화 할 때 눈금 으로 표시 합 니 다.구체 적 으로 Json 에 서 는\/date(31554720000)\/ V 로 닫 기 를 진행 합 니 다.괄호 안에 Date 의 눈금 이 있 습 니 다.눈금 은 시간 이 똑 딱 거 치 는 밀리초 수 입 니 다.눈금 계산 시간 은 UTC 1970 년 1 월 1 일 자정 에 시 작 된 것 입 니 다.이 시작 시간 은 UTC 시간 이 므 로 다음 절 차 를 보십시오.
Customer cs
=
new
Customer();
cs.BirthDay
=
new
DateTime(
1980
,
1
,
1
,
12
,
0
,
0
);
cs.Name
=
"
steven
"
;
cs.Sex
=
true
;
JavaScriptSerializer js
=
new
JavaScriptSerializer();
string
output
=
js.Serialize(cs);
Customer cust
=
js.Deserialize(output,
typeof
(Customer))
as
Customer;
if
(cust
!=
null
)
{
txtBirthDay.Text
=
cust.BirthDay.Value.ToString();
}
이렇게 처리 할 때 문 제 는 바로 서열 화 된 날 짜 는 원래 의 1980-1-12:00:00 이 아니 라 utc 시간 에 따라 얻 을 수 있 는 시간 입 니 다.1979-12-31 4:00:00 일 수 있 습 니 다.이렇게 인터페이스 에서 UI 전 시 를 할 때 일치 하 는 문 제 를 가 져 올 수 있 습 니 다!
다른 처 리 는 매우 간단 합 니 다.직렬 화 하기 전에 로 컬 시간 을 UTC 시간 으로 바 꾼 다음 에 반 배열 한 후에 UTC 시간 을 로 컬 시간 으로 바 꾸 면 됩 니 다.변 경 된 코드 를 보 세 요.
Customer cs
=
new
Customer();
cs.BirthDay
=
new
DateTime(
1980
,
1
,
1
,
12
,
0
,
0
).ToUniversalTime();
cs.Name
=
"
steven
"
;
cs.Sex
=
true
;
JavaScriptSerializer js
=
new
JavaScriptSerializer();
string
output
=
js.Serialize(cs);
Customer cust
=
js.Deserialize(output,
typeof
(Customer))
as
Customer;
if
(cust
!=
null
)
{
txtBirthDay.Text
=
cust.BirthDay.Value.ToLocalTime().ToString();
}
자,이제 그만 하 자!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.