【问题标题】:Datetime to Date in c# for WSDL用于 WSDL 的 c# 中的日期时间到日期
【发布时间】:2015-01-28 15:14:32
【问题描述】:

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

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

一切都很顺利,直到特定方法需要 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# 的 Date 进行了一些研究。 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。它在代理对象初始化时抛出异常。

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

提前致谢。

【问题讨论】:

  • 顺便问一下DOB的值是多少?不应该是today 吗?

标签: c# php date datetime wsdl


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 让我这么说吧,PHP 不理解 DateTime (2015-01-28 12:00:00AM) 它理解 Date (2015-01-28),所以当 .Net 创建它的代理类时和属性。它将 DOB(日期数据类型)转换为日期时间。所以即使我设置 ' dtToday.ToString("yyyy-MM-dd"); ' 它将被强制转换为 Datetime。而是 C# 和 PHP 之间的通信问题
【解决方案2】:

如果您想要Soner 提到的文本表示,您可以执行以下操作

DateTime theDate = DateTime.ParseExact("2015-01-28", "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
string strTheDate = theDate.ToString("yyyy/MM/dd");

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多