3

我有这种格式的字符串: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

4 回答 4

6

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

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

所以这适用于任何文化:

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

Demo

“/”自定义格式说明符

如果要验证给定的日期字符串,可以使用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 
}
于 2013-08-27T09:11:00.687 回答
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);
于 2013-08-27T09:10:29.137 回答
1

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

DateTime.ParseExact("19/8/1988", "dd/M/yyyy", CultureInfo.InvariantCulture)
于 2013-08-27T14:44:21.590 回答
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))

让我知道它是否有帮助。

于 2013-08-30T06:53:07.397 回答