簡體   English   中英

c# camt54 (iso 20022) 中的日期時間反序列化問題

[英]c# Datetime deserialization problem in camt54 (iso 20022)

如果已經問過這個問題,我提前道歉,但我找不到任何可以幫助我理解如何解決問題的東西。

問題是,當嘗試反序列化特定銀行的 camt54 時,我的程序出錯了。 調查這個問題我意識到反序列化器無法轉換這個標簽:

<ToDtTm>2020-11-18T24:00:00+01:00</ToDtTm>
    

顯然我明白為什么。 C# 日期時間格式不包括 24:00:00 並且調試器返回錯誤:“字符串 '2020-11-18T24:00:00+01:00' 不是有效的 AllXsd 值”

但從我在 xml 中的理解來看,這是一個可接受的值。

不幸的是,這是發生在我身上的第一個案例。 我已經反序列化了很多 camt54,直到現在都沒有遇到任何問題。

如何告訴反序列化器正確讀取插入到 xml 中的值?

先感謝您。 馬泰奧。

使用以下:

    class Program
    {
        static void Main(string[] args)
        {
            string xml = "<root><ToDtTm>2020-11-18T24:00:00+01:00</ToDtTm></root>";
            StringReader sReader = new StringReader(xml);
            XmlReader xReader = XmlReader.Create(sReader);
            XmlSerializer serializer = new XmlSerializer(typeof(root));
            root root = (root)serializer.Deserialize(xReader);
        }
    }
    public class root
    {
        public DateTime _ToDtTm { get; set; }
        public String ToDtTm {
            get {
                return _ToDtTm.ToString(@"yyyy-MM-dd\Thh:mm:sszzz"); 
            }
            set {
                string date = value.Replace("T24", "T00");
                _ToDtTm = DateTime.Parse(date); }
            }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM