Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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
C# 从字符串中提取日期_C# - Fatal编程技术网

C# 从字符串中提取日期

C# 从字符串中提取日期,c#,C#,我想从字符串中提取日期。字符串是日期和一些附加文本的组合,但日期格式会更改,例如1。2014年12月2日上午12:00:00第一天2。2014年9月12日星期一第二天形成这两种格式我如何提取日期并将其转换为c#格式的datetime。您可以使用ParseExact/TryParseExact和允许的格式数组: string strDate1 = "12/2/2014 12:00:00 AM"; string strDate2 = "Mon 12 Sep 2014"; // it was a f

我想从字符串中提取日期。字符串是日期和一些附加文本的组合,但日期格式会更改,例如1。2014年12月2日上午12:00:00第一天2。2014年9月12日星期一第二天形成这两种格式我如何提取日期并将其转换为c#格式的datetime。

您可以使用
ParseExact
/
TryParseExact
和允许的格式数组:

string strDate1 = "12/2/2014 12:00:00 AM";
string strDate2 = "Mon 12 Sep 2014";  // it was a friday ;)
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt;
if (DateTime.TryParseExact(strDate1, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate1 parsed successfully: " + dt); 
}
if (DateTime.TryParseExact(strDate2, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate2 parsed successfully: " + dt);
}
但是,无法解析2014年9月12日星期一,因为它不是星期一,而是星期五

如果字符串还包含“垃圾”,则需要首先删除它。您可以使用以下LINQ查询,该查询使用格式字符串“
Length
”来获取字符串的相关部分:

string[] dateStrings = { "12/2/2014 12:00:00 AM garbage garbage", "Fri 12 Sep 2014garbage" };
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt = default(DateTime);
var dates = from dateString in dateStrings
            from format in allowedFormats
            where format.Length <= dateString.Length
            let datePart = dateString.Substring(0, format.Length)
            where DateTime.TryParseExact(datePart, format, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dt)
            select dt;
DateTime[] validDates = dates.ToArray();  // both dates parsed successfully
string[]dateStrings={“2014年2月12日12:00:00上午垃圾箱”,“2014年9月12日星期五垃圾箱”};
字符串[]allowedFormats={“dd/M/yyyy hh:mm:ss tt”,“ddd dd MMM yyyy”};
DateTime dt=默认值(DateTime);
var dates=来自日期字符串中的日期字符串
从允许格式中的格式

其中format.Length可以将
ParseExact
/
TryParseExact
与允许的格式数组一起使用:

string strDate1 = "12/2/2014 12:00:00 AM";
string strDate2 = "Mon 12 Sep 2014";  // it was a friday ;)
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt;
if (DateTime.TryParseExact(strDate1, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate1 parsed successfully: " + dt); 
}
if (DateTime.TryParseExact(strDate2, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate2 parsed successfully: " + dt);
}
但是,无法解析2014年9月12日星期一,因为它不是星期一,而是星期五

如果字符串还包含“垃圾”,则需要首先删除它。您可以使用以下LINQ查询,该查询使用格式字符串“
Length
”来获取字符串的相关部分:

string[] dateStrings = { "12/2/2014 12:00:00 AM garbage garbage", "Fri 12 Sep 2014garbage" };
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt = default(DateTime);
var dates = from dateString in dateStrings
            from format in allowedFormats
            where format.Length <= dateString.Length
            let datePart = dateString.Substring(0, format.Length)
            where DateTime.TryParseExact(datePart, format, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dt)
            select dt;
DateTime[] validDates = dates.ToArray();  // both dates parsed successfully
string[]dateStrings={“2014年2月12日12:00:00上午垃圾箱”,“2014年9月12日星期五垃圾箱”};
字符串[]allowedFormats={“dd/M/yyyy hh:mm:ss tt”,“ddd dd MMM yyyy”};
DateTime dt=默认值(DateTime);
var dates=来自日期字符串中的日期字符串
从允许格式中的格式

其中format.Length可以将
ParseExact
/
TryParseExact
与允许的格式数组一起使用:

string strDate1 = "12/2/2014 12:00:00 AM";
string strDate2 = "Mon 12 Sep 2014";  // it was a friday ;)
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt;
if (DateTime.TryParseExact(strDate1, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate1 parsed successfully: " + dt); 
}
if (DateTime.TryParseExact(strDate2, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate2 parsed successfully: " + dt);
}
但是,无法解析2014年9月12日星期一,因为它不是星期一,而是星期五

如果字符串还包含“垃圾”,则需要首先删除它。您可以使用以下LINQ查询,该查询使用格式字符串“
Length
”来获取字符串的相关部分:

string[] dateStrings = { "12/2/2014 12:00:00 AM garbage garbage", "Fri 12 Sep 2014garbage" };
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt = default(DateTime);
var dates = from dateString in dateStrings
            from format in allowedFormats
            where format.Length <= dateString.Length
            let datePart = dateString.Substring(0, format.Length)
            where DateTime.TryParseExact(datePart, format, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dt)
            select dt;
DateTime[] validDates = dates.ToArray();  // both dates parsed successfully
string[]dateStrings={“2014年2月12日12:00:00上午垃圾箱”,“2014年9月12日星期五垃圾箱”};
字符串[]allowedFormats={“dd/M/yyyy hh:mm:ss tt”,“ddd dd MMM yyyy”};
DateTime dt=默认值(DateTime);
var dates=来自日期字符串中的日期字符串
从允许格式中的格式

其中format.Length可以将
ParseExact
/
TryParseExact
与允许的格式数组一起使用:

string strDate1 = "12/2/2014 12:00:00 AM";
string strDate2 = "Mon 12 Sep 2014";  // it was a friday ;)
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt;
if (DateTime.TryParseExact(strDate1, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate1 parsed successfully: " + dt); 
}
if (DateTime.TryParseExact(strDate2, allowedFormats, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None, out dt))
{
    Console.WriteLine("strDate2 parsed successfully: " + dt);
}
但是,无法解析2014年9月12日星期一,因为它不是星期一,而是星期五

如果字符串还包含“垃圾”,则需要首先删除它。您可以使用以下LINQ查询,该查询使用格式字符串“
Length
”来获取字符串的相关部分:

string[] dateStrings = { "12/2/2014 12:00:00 AM garbage garbage", "Fri 12 Sep 2014garbage" };
string[] allowedFormats = { "dd/M/yyyy hh:mm:ss tt", "ddd dd MMM yyyy" };
DateTime dt = default(DateTime);
var dates = from dateString in dateStrings
            from format in allowedFormats
            where format.Length <= dateString.Length
            let datePart = dateString.Substring(0, format.Length)
            where DateTime.TryParseExact(datePart, format, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dt)
            select dt;
DateTime[] validDates = dates.ToArray();  // both dates parsed successfully
string[]dateStrings={“2014年2月12日12:00:00上午垃圾箱”,“2014年9月12日星期五垃圾箱”};
字符串[]allowedFormats={“dd/M/yyyy hh:mm:ss tt”,“ddd dd MMM yyyy”};
DateTime dt=默认值(DateTime);
var dates=来自日期字符串中的日期字符串
从允许格式中的格式


where format.Length这两个字符串是什么?您能用正确的格式显示它们吗?示例1和2是两个字符串我不能使用正则表达式格式更改运行时这两个字符串是什么?您能用正确的格式显示它们吗?示例1和2是两个字符串我不能使用正则表达式格式更改运行时这两个字符串是什么?您能用正确的格式显示它们吗?示例1和2是两个字符串我不能使用正则表达式格式更改运行时这两个字符串是什么?您能用正确的格式显示它们吗?示例1和2是两个字符串,我不能使用正则表达式格式更改run timestrDate1类似于strDate1=“1/1/2015 12:00:00 AM asas”和strDate2=“Mon 23 dec 1 2014 asasas”,所以它不是working@GaneshGadekar:然后首先清除垃圾,
asas
不足以确定规则。是的,你是对的,但我有相同的问题日期随附说明。@GaneshGadekar:看看我编辑的答案。非常好的答案谢谢Tim。strDate1就像strDate1=“1/1/2015 12:00:00 AM asas”和strDate2=“Mon 23 dec 1 asasas”所以它不是working@GaneshGadekar:然后首先清除垃圾,
以及
不足以确定规则。是的,你是对的,但我有相同的问题日期随附说明。@GaneshGadekar:看看我编辑的答案。非常感谢Tim。strDate1类似于strDate1=“1/1/2015 12:00:00 AM asas”和strDate2=“周一23日至2014年12月1日asasas”因此working@GaneshGadekar:然后首先清除垃圾,
以及
不足以确定规则。是的,你是对的,但我有相同的问题日期随附说明。@GaneshGadekar:看看我编辑的答案。非常好的答案谢谢Tim。strDate1类似于strDate1=“1/1/2015 12:00:00 AM asas“和strDate2=”2014年12月1日星期一“因此working@GaneshGadekar:然后首先清除垃圾,
以及
都不足以确定规则。是的,你是对的,但我有相同的问题日期随附说明。@GaneshGadekar:看看我编辑的答案。非常好的答案谢谢Tim。