转换时,日期时间给出错误

时间:2013-08-27 09:04:03

标签: c# asp.net .net vb.net visual-studio-2008

我在这个形式中有字符串:19/8/1988

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

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

我也无法在cdate(DateOfBirth)

中执行此操作

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

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

4 个答案:

答案 0 :(得分:6)

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

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

所以这适用于任何文化:

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

Demo

The "/" Custom Format Specifier

如果要验证给定的日期字符串,可以使用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 
}

答案 1 :(得分:2)

请注意,在日期时间之前有空格,需要在使用给定格式解析为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);

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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))

让我知道它是否有帮助。