序列化对象日期/时间

本文关键字:时间 日期 对象 序列化 | 更新日期: 2023-09-27 18:32:22

我有一个问题。我必须序列化一个对象,并且该 sam 对象已转换为 XML,但它是日期时间对象。

好的,我有字符串变量,它填充了来自某些sql查询的数据,如下所示

/

/日期交付请求

 if (rw_mat["dat_pot"].ToString().Length <= 0)
     {
           date_req = "";
     }
     else
     {
           date_req = rw_mat["dat_pot"].ToString();
     }

现在,date_req被这样反对:

var dtfi = new DateTimeFormatInfo { ShortDatePattern = "dd-MM-yyyy", DateSeparator = "-" };
Agr3PL.DataArea.Header.DateDeliveryRequest = Convert.ToDateTime(date_req, dtfi);

最后,这个对象和其他对象被传递给序列化函数:

 private string SerializeAnObject(object obj)
            {
                System.Xml.XmlDocument doc = new XmlDocument();
                System.Xml.Serialization.XmlSerializer serializer = new        System.Xml.Serialization.XmlSerializer(obj.GetType());
                System.IO.MemoryStream stream = new System.IO.MemoryStream();
                try
                {
                    serializer.Serialize(stream, obj);
                    stream.Position = 0;
                    doc.Load(stream);
                    return doc.InnerXml;
                }
                catch (Exception ex)
                {
                    WriteErrors.WriteToLogFile("WS.SAVE_DOK_SERIJALIZACIJA", ex.ToString());
                    throw ex;
                }

所以我想将日期时间变量获取为 xml,但我没有,xml必须看起来像这样(它只是一个段)

- <Header>
  <MessageType>COR</MessageType> 
  <UniqueHeaderNumber /> 
  <UniqueHeaderNumberFromWMS /> 
  <CompanyCode /> 
  <OrderNumber /> 
  <InvoiceNumber /> 
  <MovementNumber /> 
  <ReceiptNumber /> 
  <DebitNoteNumber /> 
  <PickNoteNumber /> 
  <LoadNumber /> 
  <DropSequence /> 
  <BulkPickNoteNumber /> 
  <NumberOfPallets />
  <DateDeliveryRequest />

但问题是 xml 没有显示节点>日期交付请求它不存在我没有收到错误,只是没有节点>日期交付请求???

我不知道是序列化程序功能的问题还是其他问题,也许是格式化日期或其他原因?

序列化对象日期/时间

我测试了这段代码:

public class Test
{
    private DateTime dateDeliveryRequestField;
    [System.Xml.Serialization.XmlElementAttribute(DataType = "date")]
    public System.DateTime DateDeliveryRequest { get { return this.dateDeliveryRequestField; } set { this.dateDeliveryRequestField = value; } }
}
private string SerializeAnObject(object obj)
{
    System.Xml.XmlDocument doc = new XmlDocument();
    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(obj.GetType());
    System.IO.MemoryStream stream = new System.IO.MemoryStream();
    try
    {
       serializer.Serialize(stream, obj);
       stream.Position = 0;
       doc.Load(stream);
       return doc.InnerXml;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
Test n = new Test();
n.DateDeliveryRequest = DateTime.Parse("2012-10-07");
string result = SerializeAnObject(n);
结果

和结果:

<?xml version="1.0"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <DateDeliveryRequest>2012-10-07</DateDeliveryRequest>
</Test>

所以一切看起来都不错。

要序列化日期,请使用此字符串格式

date_req = rw_mat["dat_pot"].ToString("s");