You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinForm向WebService传DateTime格式不符及ParseExact报错排查

问题解决步骤

1. 修复Date.ParseExact的异常问题

你的输入字符串是2023-11-7 16:15:48,其中日是单个数字(7),但你使用的格式串yyyy-MM-dd HH:mm:ss中的dd要求两位数字的日期(比如07),格式不匹配导致报错。

解决方法:

使用兼容单/双位数日的格式串:

Dim DummyDate As DateTime
DummyDate = Date.ParseExact(Datos(1), "yyyy-MM-d HH:mm:ss", CultureInfo.InvariantCulture)

如果输入字符串中月、日可能出现单/双位数的混合情况(比如2023-9-5或2023-10-15),可以用格式数组提高兼容性:

Dim formats() As String = {"yyyy-MM-d HH:mm:ss", "yyyy-MM-dd HH:mm:ss", "yyyy-M-d HH:mm:ss", "yyyy-M-dd HH:mm:ss"}
Dim DummyDate As DateTime = Date.ParseExact(Datos(1), formats, CultureInfo.InvariantCulture, DateTimeStyles.None)

2. 解决WebService接收DateTime格式为mm/dd/YYYY的问题

DateTime对象本身没有格式,问题出在**.NET客户端向WebService序列化DateTime的过程**——默认情况下客户端会使用当前线程的文化(比如美式en-US)生成mm/dd/YYYY格式的字符串,而对方期望欧式dd/mm/YYYY格式。

解决方法:

方法一:临时切换线程文化(简单直接)

在调用WebService前,将当前线程的文化切换为期望的格式文化(比如英式en-GB),调用完成后恢复原文化:

Imports System.Globalization
Imports System.Threading

' 保存原文化设置
Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
Dim originalUICulture As CultureInfo = Thread.CurrentThread.CurrentUICulture

Try
    ' 切换到目标文化(en-GB对应dd/mm/yyyy格式)
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB")
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-GB")
    
    ' 调用WebService方法,传入DateTime对象
    YourWebServiceClient.TargetMethod(DummyDate)
Finally
    ' 恢复原文化设置
    Thread.CurrentThread.CurrentCulture = originalCulture
    Thread.CurrentThread.CurrentUICulture = originalUICulture
End Try

方法二:修改WebService代理类的序列化属性(持久化)

如果你通过添加Web引用生成了代理类,可以通过自定义属性强制DateTime的序列化格式。注意:直接修改自动生成的代理类会在更新Web引用时被覆盖,建议用部分类扩展:

Imports System.Xml.Serialization

Partial Public Class YourWebServiceProxyClassName
    ' 覆盖原日期属性,指定序列化格式
    <XmlElement(Format:="dd/MM/yyyy HH:mm:ss")>
    Public Shadows Property YourDateProperty As DateTime
End Class

额外注意:

如果对方服务期望UTC时间,建议将DateTime转换为UTC后再发送,避免时区差异导致的解析问题:

DummyDate = DummyDate.ToUniversalTime()

内容的提问来源于stack exchange,提问作者E_Blue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:03:17