转换时Datetime出错

本文关键字:出错 Datetime 转换 | 更新日期: 2023-09-27 18:29:04

我有这个格式的字符串:1988年8月19日

注:String DateOfBirth=" 19/8/1988"

当我使用Datetime.parse(DateOfBirth)时,它会给我invalid dateformat error

我也无法在cdate(DateOfBirth) 中完成

当我输入格式为mm/dd/yyyy(即8/19/1988)的字符串时,它不会给我错误。

请帮我把字符串转换成mm/ddd/yyyy格式的日期。

转换时Datetime出错

小写mm表示分钟而不是月份,需要使用大写M(单个字符)。

但是您还需要将ParseExactCultureInfo.InvariantCulture一起使用。否则,您当前的区域性将用于获取日期分隔符,该分隔符不一定是/(在许多国家/地区,它是.)。

因此,这适用于任何文化:

DateTime.ParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture)

演示

"/"自定义格式说明符

如果您想验证给定的日期字符串,可以使用DateTime.TryParseExact:

DateTime dt; 
if(DateTime.TryParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) 
{
    // success, dt contains the correct date now
} 
else 
{
    // not a valid date 
}

请注意,在使用给定格式解析到DateTime之前,您需要删除该字符串

var date = DateTime.ParseExact(DateOfBirth.Trim(), "d/M/yyyy", CultureInfo.InvariantCulture);

如果你有多种日期时间格式,那么

var date = DateTime.ParseExact(DateOfBirth.Trim(), new string[] {"d/M/yyyy","M/d/yyyy"} , CultureInfo.InvariantCulture, DateTimeStyles.None);

Net开发人员,这是vb中的一个代码,需要转换为C#

Dim time As DateTime = DateTime.Now
Dim format As String = "dd/MM/yyyy" 
' you can set format to both "dd/MM/yyyy" or "d/MM/yyyy"
MsgBox(time.ToString(format))

如果有帮助,请告诉我。

我知道你出错的原因,系统日期时间默认为美国日期时间格式(mm/dd/yyyy)在你的系统中更改此格式,转到control panel --> regional and languages --> formats --> additional settings-->日期更改你想要的格式这是手动解决你的问题或以其他方式通过程序解决

DateTime.ParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture)