[英]Parse string value to datetime value
我需要将字符串值解析为日期时间值,我的日期格式如下:
DD.MM.YYYY
我想以这种格式解析值:
YYYY-MM-DD
我试图这样做:
DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture);
但是我有一个错误:字符串未被识别为有效的DateTime。
有没有办法做到这一点?
如果您有格式为DD.MM.YYYY
的字符串,为什么要将YYYY-MM-DD
传递给ParseExact函数?
尝试这样:
string dateStr = "12.06.2012";
DateTime date = DateTime.ParseExact(dateStr, "dd.MM.yyyy", CultureInfo.InvariantCulture);
然后,当您想将此DateTime
实例输出到某处时,可以使用YYYY-MM-DD
格式,如下所示:
string result = date.ToString("yyyy-MM-dd");
解析日期时,您需要指定要阅读的格式,而不是以后要输出的格式。
因此,请使用dd.MM.yyyy
作为ParseExact
参数。
检查DateTime.ParseExact方法(字符串,字符串,IFormatProvider)将日期和时间的指定字符串表示形式转换为其等效的DateTime。 字符串表示形式的格式必须与指定的格式完全匹配,否则将引发异常。
您必须将格式字符串指定为DD.MM.YYYY
而不是"yyyy-MM-dd"
。
尝试这个:
DateTime dateValue = DateTime.ParseExact(date_req, "DD.MM.YYYY", CultureInfo.InvariantCulture );
// use this when you need to show that formatted date value
string formattedDate = dateValue.ToString("yyyy-MM-dd");
更好的方法是使用DateTime.TryParseExact方法 ,如果您希望将其用作日期而不是字符串,请修改您的区域性信息和日期分隔符。
CultureInfo enUS = new CultureInfo("en-US");
string dateString;
DateTime dateValue;
dateString = "05.01.2009";
if (DateTime.TryParseExact(dateString, "DD.MM.YYYY", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
我认为您想要做的是解析dd.MM.yyyy
,然后将其显示为yyyy-MM-dd
。
您首先必须将string
解析为DateTime
:
DateTime date = DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture);
现在, date
是计算机实际理解的日期的表示形式(之前只是一个字符串)。 现在,您可以随时显示该对象:
string yyyyMMdd = date.ToString("yyyy-MM-dd");
string arabic = date.ToString("yyyy-MM-dd", new CultureInfo("ar"));
// and so on
不要忘记,当将日期从字符串转换为DateTime
并返回时,文化和时区值得牢记。
首先以现有格式解析它,然后转换为所需的字符串格式。
var date = DateTime.ParseExact(date_req, "dd.MM.yyyy", CultureInfo.InvariantCulture);
var str = date.ToString("yyyy-MM-dd");
您可以先将其转换为字符数组。 那么您可以将年/月/年分别解析为整数。 您知道数字的索引,因此这很容易。 之后,您可以按照自己喜欢的方式连接每个元素。
错误。 您有蛋糕,想吃木桩。 为了使您的胃相信蛋糕是桩,您必须将蛋糕转换成桩。 无法做到这一点。 解析是要接受一个值,然后使用模式(或多个)将其转换为其他值,而不进行转换。 因此,您想要的可能是正确的,但您提出的要求是错误的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.