是否可以在 DateTime 对象中定义日期和时间格式?

Is it possible to define the date and time format in a DateTime object?

提问人:E_Blue 提问时间:11/8/2023 最后编辑:MaxenceE_Blue 更新时间:11/8/2023 访问量:103

问:

我有一个桌面应用程序 (WinForm),用于将数据发送到远程 WebService。这工作正常,但 Web 服务所有者声称我发送的 DateTime 是格式的,他们需要mm/dd/YYYYdd/mm/YYYY

有什么办法可以改变这一点吗?

我不需要转换为字符串,Web 服务需要发送一个 DateTime 对象。

编辑:

我发现了问题,我正在使用

Date.Parse(Datos(1))' Datos(1) = 2023-11-7 16:15:48 - 

Datos 是一个字符串列表。

现在我正在尝试使用它

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

但我有一个例外

“无法将字符串识别为有效的 DateTime 值。”

我做错了什么?

vb.net 日期时间

评论

0赞 Matt Johnson-Pint 11/8/2023
对象本身没有格式。当您将数据发送到远程 Web 服务时,您的对象将被格式化为字符串。如果不显示如何调用 Web 服务的调试详细信息,我们就无法回答此问题。最后,发送到远程 Web 服务的正确格式通常是 ISO-8601,它使用格式。DateTimeDateTimeyyyy-MM-dd
0赞 E_Blue 11/8/2023
@MattJohnson品脱 这就是我的想法,因为如果我试图只得到月份,我会得到 11,这是正确的,但他们说我要发送第 7 个月和第 11 天
0赞 E_Blue 11/8/2023
@MattJohnson品脱,我刚刚更新了帖子。
2赞 Jon Skeet 11/8/2023
现在还不清楚问题是否真的在于你如何发送值,或者你如何将字符串解析为值。听起来实际上是后者,这与你原来的帖子所谈论的内容完全正交。DateTime
0赞 Joel Coehoorn 11/8/2023
此代码显示您尝试将输入解析为特定格式,但这是反向的。您需要向我们展示您编写或序列化现有代码(未格式化!输出的 DateTime 值。Datos(1)

答:

5赞 Jon Skeet 11/8/2023 #1

否,值没有格式。把它想象成一个整数 - 整数不是“十进制”或十六进制,但你可以以特定格式格式化或解析整数。完全相同的情况也是如此。DateTimeDateTime

我们不知道您是如何形成请求的(而且他们需要 dd/MM/yyyy 而不是 ISO-8601 格式的 yyyy-MM-dd 很奇怪),但您可以在 中指定格式(和区域性)。如果您不是手动创建请求,我希望有办法配置序列化请求的任何内容,以特定格式序列化值。DateTime.ToStringDateTime

评论

0赞 E_Blue 11/8/2023
这就是我的想法,因为如果我试图只得到月份,我会得到 11,这是正确的,但他们说我要发送第 7 个月和第 11 天。
0赞 E_Blue 11/8/2023
我刚刚更新了帖子。
0赞 Jon Skeet 11/8/2023
@E_Blue:随着帖子的更新,我们仍然缺少很多信息。这听起来好像与 Web 服务完全无关,而是关于您如何解析从您之前没有提到的字符串列表中收到的数据。这就是为什么提供更多的上下文,最好是一个最小的可重复的例子总是非常重要的。请阅读 jonskeet.uk/links/stack-hints
0赞 E_Blue 11/9/2023
我正在从MySQL服务器请求数据并格式化所有字段以满足远程服务器协议标准;为此,我使用此date_format(from_unixtime(timestamp),'%Y/%m/%e %k:%i:%s') 作为 'timestamp';因为在我的数据库中,日期是 UNIX 时间格式的。
0赞 Jon Skeet 11/9/2023
@E_Blue:这不应该出现在评论中,它应该出现在帖子中,包括示例数据。(目前尚不清楚为什么不直接获取 unix 时间戳并将其转换为 C# 代码,而不是在 SQL 中格式化它,然后在 C# 中解析它......