相关疑难解决方法(0)

如何截断.NET DateTime的毫秒数

我正在尝试将传入请求的时间戳与数据库存储值进行比较.SQL Server当然会保留一些毫秒的精度,当读入.NET DateTime时,它包括那些毫秒.但是,对系统的传入请求不提供该精度,因此我需要简单地删除毫秒.

我觉得我错过了一些明显的东西,但我还没有找到一种优雅的方法(C#).

.net c# datetime

319
推荐指数
10
解决办法
14万
查看次数

将DateTime序列化为时间而不是毫秒和gmt

我使用XSD文件作为输入创建了一个C#类文件.我的一个属性看起来像这样:

 private System.DateTime timeField;

 [System.Xml.Serialization.XmlElementAttribute(DataType="time")]
 public System.DateTime Time {
     get {
         return this.timeField;
     }
     set {
         this.timeField = value;
     }
 }
Run Code Online (Sandbox Code Playgroud)

序列化时,文件的内容现在如下所示:

<Time>14:04:02.1661975+02:00</Time>
Run Code Online (Sandbox Code Playgroud)

在属性上使用XmlAttributes,是否有可能在没有毫秒和GMT值的情况下渲染它?

<Time>14:04:02</Time>
Run Code Online (Sandbox Code Playgroud)

这是可能的,还是我需要在序列化类之后将某种xsl/xpath-replace-magic混合在一起?

它不是将对象更改为String的解决方案,因为它在应用程序的其余部分中像DateTime一样使用,并允许我们使用XmlSerializer.Serialize()方法从对象创建xml表示.

我需要从字段中删除额外信息的原因是接收系统不符合time数据类型的w3c标准.

.net time attributes xml-serialization

12
推荐指数
2
解决办法
2万
查看次数

如何仅从C#中的DateTime序列化Xml日期

我有以下简单的课程;

Birthdays
{
  public DateTime DateOfBirth {get;set;}
  public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

然后我使用我的对象将我的对象序列化为Xml;

try
{
   XmlSerializer serializer = new XmlSerializer(obj.GetType());

   using (MemoryStream ms = new MemoryStream())
   {
        XmlDocument xmlDoc = new XmlDocument();

        serializer.Serialize(ms, obj);
        ms.Position = 0;
        xmlDoc.Load(ms);
        return xmlDoc;
    }
}
catch (Exception e)
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当返回Xml时,DateOfBirth格式类似于2012-11-14T00:00:00而不是2012-11-14.

如何覆盖它以便我只返回日期部分?

c# xml serialization datetime xml-serialization

9
推荐指数
1
解决办法
1万
查看次数

C# 从 xml 反序列化日期时间

我必须用日期反序列化 xml,如下所示:

<date>2015/10/16 00:00:00.000000000</date>
Run Code Online (Sandbox Code Playgroud)

我的课程包含这个字段:

[XmlAttribute("date")]
public DateTime StartDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

但我总是收到默认日期。是否可以解析这种格式的日期时间?

编辑:当我将 XmlAttribute 更改为 XmlElement 时,出现异常:

There is an error in XML document
Run Code Online (Sandbox Code Playgroud)

所以我认为 DateTime 可以解析这种格式。

c# xml-parsing

5
推荐指数
1
解决办法
9144
查看次数

为什么类型为s:s的XSD元素在生成服务引用时会成为字符串?

我正在尝试从WSDL创建一个新的服务引用,我希望所有的属性都是DateTime而不是string.

例如,联系人的xsd定义:

<s:complexType name="Contact">
    <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:Address" />
        <s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
        ...
        <s:element minOccurs="1" maxOccurs="1" name="BirthDate" type="s:date" />
</s:sequence>
Run Code Online (Sandbox Code Playgroud)

BirthDate的类型是s:date,但生成的类型(在Reference.cs中)是一个字符串.

internal partial class Contact : object, IExtensibleDataObject, INotifyPropertyChanged
{
    [OptionalField]
    private MembershipMgmtMediator.Address AddressField;

    [OptionalField]
    private string EmailField;

    private string BirthDateField;
}
Run Code Online (Sandbox Code Playgroud)

如果我创建一个Web项目并将其添加为Web引用而不是服务引用,它将正确成为DateTime.我认为这与wsdl.exe和svcutil.exe在幕后工作的方式有关,但无论如何,我都在试图弄清楚如何正确地让Visual Studio认识到这个属性应该是一个DateTime.

xsd wsdl date service-reference svcutil.exe

4
推荐指数
1
解决办法
3510
查看次数

XmlSerializer不反序列化DateTime

我有一个XML文档,我正在使用反序列化XmlSerializer.文档上的其他属性工作正常,但有一个元素特别不起作用:

<StartDate>2014-03-21T00:00:00</StartDate>
Run Code Online (Sandbox Code Playgroud)

这在POCO中的C#中定义为:

[XmlElement("StartDate")]
private DateTime StartDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我反序列化文档时,StartDate01/01/0001 12:00:00 AM.我认为标准的XML日期/时间格式是YYYY-MM-DDTHH:MM:SS?那为什么这不能正确反序列化呢?

注意:我无法控制我正在反序列化的XML文档.它来自第三方系统.

c# xml serialization datetime

1
推荐指数
1
解决办法
2560
查看次数