자 바스 크 립 트 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에 따라 라이센스가 부여됩니다.