0

'OrderDate'라는 속성이있는 'Order'라는 엔티티가 있다고 가정 해 보겠습니다. 서버에 저장 파이프 라인에서 나는 다음과 같이 유효성 검사 논리를 가지고 : 사용자가 내가 오늘에 기본적으로 주문일을 설정하려면 새로운 질서를 만들 때자바 스크립트의 기본 DateTimeOffset 설정

partial void Orders_Validate(Order entity, EntitySetValidationResultsBuilder results) { 
    if(entity.OrderDate > DateTime.Today) 
      results.AddPropertyError(
       "Please specify a date that is not in the future", 
       entity.Details.Properties.OrderDate); 
} 

에서, HTML 클라이언트에서 데이터 입력을 간소화하려면 ' 생성 된 '이벤트는 다음과 같습니다.

myapp.Order.created = function (entity) { 
    entity.OrderDate = new Date(); 
    entity.OrderDate.setHours(0, 0, 0, 0); 
}; 

서버와 클라이언트가 동일한 시간대에있는 한 제대로 작동합니다.

  1. 겠습니까이 이른 아침의 클라이언트가 동아시아 어딘가에 경우이 작업에 예를 들면 다음과 같습니다

    내 세 가지 질문 있습니다 월요일이지만 서버는 여전히 미국에 있으며 일요일은 아직입니까?

  2. 'OrderDate'속성에 대한 올바른 데이터 형식은 무엇입니까? 그것은 DateTimeOffset일까요 아니면 그냥 Date와 작동할까요?
  3. 유형을 DateTimeOffset 인 경우,

이 도움을 주셔서 감사합니다 자바 스크립트의 '주문 날짜'속성을 설정하는 올바른 방법은 무엇인가,

보다도으로부터,

+0

일반적으로 클라이언트는 서버 시간을 신경 쓰지 않으므로 타임 스탬프를 사용하여 상호 운용해야합니다. –

+0

내 말은 서버 오류가 "당신이 내일이에요"라고 말하면 사람을 혼란스럽게 할 것이며, 이것을 확인하고 싶다면 시간을 사용하십시오. –

답변

1

다음 블로그 게시물 소원 LightSwitch 팀은 다른 시간대를 다루는 모범 사례에 대한 유용한 배경을 제공합니다.

What Time Is It? Global Time (Steve Lasker)

이를 바탕으로 0

, 당신은을 DateTimeOffset로 주문일 필드를 정의하는 것 제안 예로 자바 스크립트 클라이언트에 기본 : 당신은을 DateTimeOffset를 사용하고, 그것은 클라이언트를 저장해야합니다,

myapp.Order.created = function (entity) { 
    entity.OrderDate = new Date(); 
    entity.OrderDate.setHours(0, 0, 0, 0); 
}; 

다음 적절한 시간대에 값이 오프셋 당신이 당신의 유효성 검사 방법의 다음과 같은 유형을 구현할 수 있도록 :

이 유용 그냥 경우
partial void Orders_Validate(Order entity, EntitySetValidationResultsBuilder results) { 
    if (entity.OrderDate.Date > DateTimeOffset.Now.Date) { 
     var languages = HttpContext.Current.Request.UserLanguages; 
     // As the browser's language may not be set, 
     // the following falls back to the server's current culture info 
     var ci = languages != null && languages.Length > 0 ? 
      new System.Globalization.CultureInfo(languages[0]) : 
      System.Globalization.CultureInfo.CurrentCulture; 
     results.AddPropertyError(
      String.Format(
       "The date {0} is invalid, please specify a date that is not in the future", 
       entity.OrderDate.ToLocalTime().Date.ToString("d", ci)), 
      entity.Details.Properties.OrderDate); 
    } 
} 

은, 위의 예는 로컬 시간대와 특정 문화의 유효성 검사 메시지의 날짜를 표시 짧은 형식, ToLocalTime 사용 및 사용자의 br 검색 현재 HTTP 요청을 통해 owser 언어로.

+0

남자 나는 당신에게 충분히 감사 할 수 없다. – user1533706

관련 문제