날짜 또는 숫자 유형의 메타 데이터 필드에 값을 할당하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/12702329

문제

메타 데이터 필드를 처리하는 다음 링크 코드를 사용하고 있습니다. -

https://code.google.com/p/tridion-practice/ 위키 / changeContentorMetAdata

그러나 Date 유형의 메타 데이터 필드에 값을 할당하려고하면 다음 XML 유효성 검사 오류가 발생합니다. -

" System.ServiceModel.FaultException`1. [MyPorject.ServiceReference.CoreServiceFault] : XML 유효성 검사 오류. 이유 : 'uuid : myuuid : datefield'요소가 유효하지 않습니다. '10 / 4 / 2012 03:04:00 am '은 데이터 유형'http://www.w3.org/2001/xmlschema에 따라 유효하지 않습니다. Datetime '- String '10 / 4 / 2012 03:04:00 AM'은 유효한 DateTime 값이 아닙니다. (오류 세부 사항은 MyPorject.ServiceReference.CoreserviceFault) "

아무리 동일한 오류가 발생하는 문자열이나 DateTime 데이터 유형으로 값을 할당할지 여부에 관계없이 DateTime 데이터 유형으로 AddValue 메소드를 과부하하려고 시도했지만 지금까지는 아무 일도 일하지 않았습니다.

AddValue 메소드의 코드 스 니펫 : -

     public void AddValue(string value1)
    {
        string value = string.IsNullOrEmpty(value1) ? null : value1; ;
        XmlElement newElement = fields.AddFieldElement(definition);
        if (value != null) newElement.InnerText = value;
    }
.

날짜와 번호 데이터 유형 모두에 대한 해결책을 제안하십시오. 미리 감사드립니다

도움이 되었습니까?

해결책 5

촬영하는 데 어려움을 겪은 후에 나는 마침내 날짜의 형식과 함께 문제를 마침내 해결합니다.이를 위해서는 로컬 컴퓨터의 시간대와 서버의 시간대와 일치해야합니다.

과 아래의 오버로드 된 방법의 코드입니다. -

      public void AddValue(DateTime value1)
    {
        DateTime value = value1 == null ? DateTime.MinValue : value1;

        XmlElement newElement = fields.AddFieldElement(definition);
        if (value != null) newElement.InnerText = value.ToString("yyyy-MM-ddThh:mm:ss");
    }
.

다른 팁

오류 메시지는 날짜 형식이 잘못되었다는 사실에 대해 매우 명시 적입니다. The string '10/4/2012 03:04:00 AM' is not a valid DateTime value.

Tridion 형식은 YYYY-MM-DDThh:mm:ss이므로 공간이 없으므로 시간대 없음 및 AM / PM 마커가 없습니다.

공식 TRIDION API에서는 일반적으로 DateTime 개체를 수락하고 올바른 형식으로 변환하기 때문에 일반적으로 변환을 수행해야합니다.그러나 사용하는 도우미 클래스가 공식 API가 아니기 때문에 몇 가지 바로 가기가 필요하며 값을 string로 설정하게합니다.

i는 일반적으로 datetime.ToString("u").Replace(" ", "T").Replace("Z", "") 을 사용하여 올바른 형식으로 날짜를 얻습니다.

날짜 문자열에는 다음과 같은 형식이 있어야합니다.

  • yyyy-mm-ddthh : mm : ss

예 :

  • "2012-10-03T09 : 39 : 43"

콘텐츠 및 메타 데이터 래퍼를 사용하고 있음을 주어서 날짜를 설정하는 방법이 나에게 조금 복잡해 보입니다. 이와 같은 것이 아닙니다.

string myStringDate = "2012-10-03T09:39:43";
fields["DateFieldName"].Value = myStringDate;
component.Metadata = fields.ToString();
.

내 C # 경험에 따라 이러한 오류가 DateTime 형식 문제로 인해 발생합니다. 코드를 아래로 시도 할 수 있습니다

DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd");
.

코드로 테스트하지는 않았지만 귀하의 경우에 작동을 희망합니다.

형식의 날짜와 시간 사이에 'T'구분 기호가 없습니다.출력 된 날짜가 다시 삽입하려는 형식으로 표시되지만 Attenway에서는 출력을 지정할 수있는 형식이며 반드시 날짜를 지정 해야하는 방식이 아니라는 것을 언급했습니다.

여기서는 XMLSCHEMA Datetime 사양에 대한 닫힌 읽기를 가지고 있습니다. http : // www.w3.org/tr/xmlschema-2/#datetime

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top