当DateTime的默认格式为';在C#的代码中,s被强制转换为字符串?
有没有办法在C#中使用DateTime对象并将其默认强制转换行为更改为字符串?当它转换为字符串时,我更希望它使用MySQL日期/时间字符串格式,而不是默认使用的格式。我可以改为使用自定义对象,但由于它是一个结构,因此将日期时间隐藏为成员并在其上提供常规日期/时间对象的功能并实现此行为会变得更加繁琐。我只是好奇是否可以为DateTime配置它,因为它在我正在工作的项目中无处不在 我认为可以使用(string)dt和Convert.ChangeType(dt,typeof(string))强制转换DateTime,因此您可以获得默认格式,这就是我想要控制的格式,而无需将项目中DateTime的所有实例更改为新的自定义对象或重构所有代码当DateTime的默认格式为';在C#的代码中,s被强制转换为字符串?,c#,datetime,C#,Datetime,有没有办法在C#中使用DateTime对象并将其默认强制转换行为更改为字符串?当它转换为字符串时,我更希望它使用MySQL日期/时间字符串格式,而不是默认使用的格式。我可以改为使用自定义对象,但由于它是一个结构,因此将日期时间隐藏为成员并在其上提供常规日期/时间对象的功能并实现此行为会变得更加繁琐。我只是好奇是否可以为DateTime配置它,因为它在我正在工作的项目中无处不在 我认为可以使用(string)dt和Convert.ChangeType(dt,typeof(string))强制转换D
请提供建议,谢谢。简短回答:不,您不能更改
DateTime
的内置类型转换行为,除非按照您自己的建议将其替换为其他类型
更详细的回答:为了实现您所追求的目标,您确实在寻找一种方法,以符合您偏好的一致方式将DateTime
转换为string
。实际上,C#中不允许将DateTime
转换为string
,因此您所指的可能是将DateTime
转换为字符串。首选的方法是ToString
方法。它有一个重载,它接受一个格式字符串和一个IFormatProvider
;您可以指定所需的确切格式。IFormatProvider
很重要,因为它指定特定于区域性的格式,如果未设置,则将从当前线程的区域性中获取。这意味着您的代码在不同的系统中的行为可能不同,因此您可能希望指定它以保留控制权。这里的默认值是CultureInfo.InvariantCulture
最后,听上去您可能非常需要它,为了保持一致性并减少键入,您可以为DateTime
提供一种扩展方法来做您想做的事情。假设您只需要日期(为了示例),然后定义扩展类:
public static class DateTimeExtensions
{
public static string Formatted(this Datetime dt)
{
return dt. ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
}
}
然后在您的代码中使用:
DateTime now = DateTime.Now;
string str = now.Formatted();
不,您不能自行更改datetime类
,但可以使用扩展方法 将自定义方法添加到以自定义格式返回日期时间的datetime类
例如,添加方法GetCustomFormat()
本文链接告诉您如何将扩展方法添加到dot net类:
DateTime Date = new DateTime();
string Custom = Date.GetCustomFormat();