.NET 将日期时间转换为可排序日期/时间模式(“s”)的格式;

发布于 2024-09-14 09:28:18 字数 881 浏览 4 评论 0原文

我正在使用 VS2008、.NET 和 C#,我需要向我们的一个客户发送一个 DATETIME 变量。

问题是他们希望日期采用可排序日期/时间模式(“s”)格式。

当我获得实际的日期时间时,它是一个日期时间对象。当我将其格式化为给定格式时,现在它是一个 String 对象,并且它具有我想要的格式。但之后我无法从具有相同格式的格式化字符串创建日期时间对象,因为它总是将其返回到原始日期时间格式。

更具体地说:

DateTime currTime = System.DateTime.Now; //(the format is "13/08/2010 09:33:57 a.m.")

String date = String.Format("{0:s}", currTime);// (wanted format "2010-08-13T09:33:57")

DateTime newDate = DateTime.Parse(date);// (original format again "13/08/2010 09:33:57 a.m.")

IFormatProvider culture = new System.Globalization.CultureInfo("", true); //(Invariant Culture)
String format = "s";                        
DateTime fecha = DateTime.ParseExact(date, format, culture); // (original format again "13/08/2010 09:33:57 a.m.")

是否有一种方法可以获取具有所需格式的 Datetime 对象,或者 Datetime 对象使用给定的格式,而您无法将它们格式化为等效的字符串格式?

谢谢

Im working with VS2008, .NET and C#, and I need to send to one of our clients a DATETIME variable.

The problem is that they want the Date in the format Sortable date/time pattern ("s").

When I get the actual datetime, it is a Datetime object. When I format it to the given format is now a String object, and it has the format I want. But after that I can't create a Datetime object from that formatted String with the same format, because it always returns it to the original Datetime format.

More specific:

DateTime currTime = System.DateTime.Now; //(the format is "13/08/2010 09:33:57 a.m.")

String date = String.Format("{0:s}", currTime);// (wanted format "2010-08-13T09:33:57")

DateTime newDate = DateTime.Parse(date);// (original format again "13/08/2010 09:33:57 a.m.")

IFormatProvider culture = new System.Globalization.CultureInfo("", true); //(Invariant Culture)
String format = "s";                        
DateTime fecha = DateTime.ParseExact(date, format, culture); // (original format again "13/08/2010 09:33:57 a.m.")

Is there a way of getting a Datetime object with the desired format, or Datetime objects use a given format, and you can't format them to the equivalent string formats?

Thx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一直在等你来 2024-09-21 09:28:18

DateTime 只是一个数字。它没有内在的“格式”。它仅在转换为字符串时才呈现为格式。因此,每当您需要 DateTime 作为字符串时,您都必须指定您想要的格式。

String date = String.Format("{0:s}", currTime);

这可以稍微缩短为:

String date = currTime.ToString("s");

A DateTime is just a number. It has no intrinsic "format". It is only rendered into a format when converted to a string. Hence, whenever you need a DateTime as a string, you have to specify what format you want it in.

String date = String.Format("{0:s}", currTime);

This can be shorted a bit to :

String date = currTime.ToString("s");
满天都是小星星 2024-09-21 09:28:18

如果我正确理解这个问题,我认为你感到困惑。 DateTime 对象本身不可格式化,它本质上只是一个数值(自 DateTime.MinValue 或其他任何值以来的刻度数)。

您可以将 DateTime 对象转换为您喜欢的任何格式的 string 表示形式,但您不会更改实际的 DateTime< /代码> 对象。

If I understand the question correctly, I think you are getting confused. A DateTime object itself is not formattable, it is essentialy just a numeric value (number of ticks since DateTime.MinValue or whatever it is).

You can convert a DateTime object into a string representation in whatever format you like, but you aren't changing the actual DateTime object.

猫卆 2024-09-21 09:28:18

每次在需要将 DateTime 值转换为字符串的地方(例如在 string.Format() 中)使用时,C# 通常会调用 .ToString() 方法。 DateTime 类型声明了一个 .ToString() 方法,该方法具有您不想要的格式。

但是,DateTime 还有其他方法,包括 .ToString(IFormatProviderprovider).ToString(string format)

因此,如果您将相关字符串类上下文中对 DateTime 变量的每次使用替换为调用适当的 .ToString 重载的变量,您可能可以实现您想要的目标,例如示例:

代替

var message = string.Format("The parcel was sent on {0}.", currTime);

使用

var message = string.Format("The parcel was sent on {0}.", currTime.ToString("s"));

Every time you use a DateTime value in a place where it needs to be turned into a string (e.g. in string.Format()), C# will generally call the .ToString() method. The DateTime type declares a .ToString() method that has the format you don’t want.

However, DateTime has additional methods, including .ToString(IFormatProvider provider) and .ToString(string format).

Therefore, you can probably achieve what you want if you replace every use of a DateTime variable in the relevant string-like context to one that calls the appropriate .ToString overload, for example:

Instead of

var message = string.Format("The parcel was sent on {0}.", currTime);

use

var message = string.Format("The parcel was sent on {0}.", currTime.ToString("s"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文