Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当DateTime的默认格式为';在C#的代码中,s被强制转换为字符串?_C#_Datetime - Fatal编程技术网

当DateTime的默认格式为';在C#的代码中,s被强制转换为字符串?

当DateTime的默认格式为';在C#的代码中,s被强制转换为字符串?,c#,datetime,C#,Datetime,有没有办法在C#中使用DateTime对象并将其默认强制转换行为更改为字符串?当它转换为字符串时,我更希望它使用MySQL日期/时间字符串格式,而不是默认使用的格式。我可以改为使用自定义对象,但由于它是一个结构,因此将日期时间隐藏为成员并在其上提供常规日期/时间对象的功能并实现此行为会变得更加繁琐。我只是好奇是否可以为DateTime配置它,因为它在我正在工作的项目中无处不在 我认为可以使用(string)dt和Convert.ChangeType(dt,typeof(string))强制转换D

有没有办法在C#中使用DateTime对象并将其默认强制转换行为更改为字符串?当它转换为字符串时,我更希望它使用MySQL日期/时间字符串格式,而不是默认使用的格式。我可以改为使用自定义对象,但由于它是一个结构,因此将日期时间隐藏为成员并在其上提供常规日期/时间对象的功能并实现此行为会变得更加繁琐。我只是好奇是否可以为DateTime配置它,因为它在我正在工作的项目中无处不在

我认为可以使用(string)dt和Convert.ChangeType(dt,typeof(string))强制转换DateTime,因此您可以获得默认格式,这就是我想要控制的格式,而无需将项目中DateTime的所有实例更改为新的自定义对象或重构所有代码


请提供建议,谢谢。

简短回答:不,您不能更改
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();