将日期字符串转换为日期时间

问题描述 投票:0回答:4

我有格式为

dd-MMM-yyyy
的日期字符串,并且想要将其转换为
datetime
,当我使用下面的代码时

DateTime.ParseExact("20-Oct-2012", "yyyy-MM-dd HH:mm tt", null) 

它导致错误

字符串未被识别为有效的日期时间。

当我修改上面的代码时

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null) 

然后我得到了格式为(

mm/dd/yyyy
)的日期时间:
10/20/2012 12:00:00 AM

但我需要将其转换为

yyyy/mm/dd
格式。请在这方面帮助我。

c# datetime
4个回答
6
投票

你应该试试这个

DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null).ToString("yyyy/mm/dd")

有关格式的进一步阅读检查此


1
投票

您需要区分两个不同的问题:将原始字符串解析为抽象的

DateTime
表示形式,以及将后者转换回另一个字符串表示形式。

在您的代码中,您仅处理前者,并依靠隐式

ToString()
方法调用(使用系统当前的区域设置)将其转换回字符串。如果要控制输出格式,需要显式指定:

// Convert from string in "dd-MMM-yyyy" format to DateTime.
DateTime dt = DateTime.ParseExact("20-Oct-2012", "dd-MMM-yyyy", null);

// Convert from DateTime to string in "yyyy/MM/dd" format.
string str = dt.ToString("yyyy/MM/dd");

另请注意,

mm
格式说明符代表分钟;月份用
MM
表示。

编辑:“转换后的日期包含值“10/20/2012 12:00:00 AM”。”小心你的意思。构造的

DateTime
值包含解析的日期和时间的抽象表示,它与任何格式“独立”。 但是,为了显示它,您需要将其转换回某种字符串表示形式。当您在调试器中查看变量时(正如您可能正在做的那样),Visual Studio 会自动调用

ToString()

 上的无参数 
DateTime
 方法,该方法会在当前区域性下呈现日期和时间(在您的案例,假设美国文化)。 

要更改此行为,使其以自定义格式呈现日期和时间,您需要显式调用

ToString(string)
重载(或其他重载之一),如我在上面的示例中所示。


0
投票

你可以试试这个:

Convert.ToDateTime("20-Oct-2012").ToString("yyyy/MM/dd")

希望这会有所帮助!!


0
投票

在数据库级别,该列被声明为 DATE

 PaymentClearingDate DATE NULL
 

避免错误

unable to cast object of type 'System.DateOnly' to type 'System.IConvertible'.

我们对 PaymentClearingDate 列执行 ToString(),然后执行 Convert.ToDateTime(),如下所示。

PAYMENT_CLEARING_DATE = Convert.ToDateTime(payment.PaymentClearingDate.ToString()) 
© www.soinside.com 2019 - 2024. All rights reserved.