gpt4 book ai didi

c# - WSDL 的 c# 中的日期时间

转载 作者:行者123 更新时间:2023-11-30 22:00:53 24 4
gpt4 key购买 nike

我们有一个 WSDL,它是一个基于 PHP 的网络服务。

当 WSDL 包含在 Visual Studio 中时,它会创建其代理类。这使得 Stuff 变得简单,我们只需要在代理类属性中设置参数。并调用代理方法。

一切都很顺利,直到特定方法需要 DOB。

当此链接在浏览器中打开时,我们发现 XML 格式。

<xsd:element name="DOB" type="xsd:date" minOccurs="0"/>

很明显 DOB 要求日期数据类型。但是持有 WSDL 的所有代理组件的 Reference.cs 将其理解为。

private System.DateTime dOBField;

[System.Xml.Serialization.SoapElementAttribute(DataType="date")]
public System.DateTime DOB {
get {
return this.dOBField;
}
set {
this.dOBField = value;
}
}

我们对 C# 的日期做了一些研究。 C# 不知道日期的概念。它只理解 DateTime。

例如。如果我们尝试将字符串解析为日期,让我们取今天的日期 28thJan。

string today = "2015-01-28";
DateTime dtToday = DateTime.ParseExact(today , "yyyy/MM/dd", null).Date;

dtToday 的值为 2015-01-28 12:00:00AM。但我们只是要求日期。

现在真正的问题来了 每当我们尝试为 DOB 代理属性设置日期时,它都会将其类型转换为 DateTime,例如“2009-02-27 12:12:22PM”

但是 PHP 期望像“2009-02-27”这样的东西。我们尝试编辑 Reference.cs。它在代理对象初始化时抛出异常。

所以请任何人给我们一些出路。

提前致谢。

最佳答案

The Value of dtToday will be 2015-01-28 12:00:00AM. But we just asked for Date.

.NET Framework 中的 DateTime 总是有日期和时间部分。 .Date property 只是将它的时间部分设置为午夜。

这就是为什么您不能将 2009-02-27 作为 DateTime。这只能是它的文本表示,您通常可以获得它 .ToString() method

dtToday.ToString("yyyy-MM-dd");

顺便说一下,你的解析操作真幸运。您甚至没有在 stringformat 之间提供精确匹配,但是由于您使用 null 作为 IFormatProvider ,看起来你的 CurrentCulture- 作为 DateSeparator/ 自动替换它自己。 :)

关于c# - WSDL 的 c# 中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com