2016-06-10 79 views
-2

我想下面的字符串转换为Date类型在C#中,字符串转换为日期C#

"Q2(JUN)-2016" 
    to 
Q2-2016 (which is of date type) 

结果应该是最新型的,它应该指出quarter2。

+0

你是什么意思“这是最新型的”是什么意思?就我所知,.NET BCL中没有类型表示“2016第2季度”。 (无论如何,这种类型不会称为“日期”,因为四分之一不是日期......) –

+0

我指的是可以表示为四分之一的日期。 – Prasu

+0

但是四分之一*不是日期。这就像说“范围1-10是一个整数”。你的意思是哪一种?或者你问在.NET中是否有这种类型? (据我所知,没有,但你可以创建自己的。) –

回答

1

你可以首先将其解析到DateTime,然后使用一个简单的计算来获得季度:

string quarterInfo = "Q2(JUN) - 2016"; 
DateTime monthDt; // will be parsed to: 06/01/2016 00:00:00 
if (DateTime.TryParseExact(
    quarterInfo.Substring(quarterInfo.IndexOf('(') + 1), 
    "MMM) - yyyy", 
    DateTimeFormatInfo.InvariantInfo, 
    DateTimeStyles.None, 
    out monthDt)) 
{ 
    int year = monthDt.Year; 
    int quarter = (monthDt.Month + 2)/3; 
    Console.WriteLine("Q{0}-{1}", quarter, year); // Q2-2016 
}