2012-02-12 164 views

回答

19

您可以使用DateTime.Parse Method来分析字符串到DateTime值具有Year Property

var result = DateTime.Parse("05/11/2010").Year; 
// result == 2010 

根据操作系统的区域性设置,您可能需要提供一个CultureInfo

var result = DateTime.Parse("05/11/2010", new CultureInfo("en-US")).Year; 
// result == 2010 
9

这应该适合你。

string myDate = "05/11/2010"; 
DateTime date = Convert.ToDateTime(myDate); 
int year = date.Year; 
+0

抱歉,这样的'DateTime'类的构造函数不存在。 – 2012-02-12 11:52:34

+0

@Serge你看起来是对的。多数民众赞成在试图想这么晚,并没有在发布前确认。 :P – 2012-02-12 13:49:17

+2

我会避免解析没有指定文化。 – CodesInChaos 2012-02-12 13:57:26

4

如果日期字符串格式是固定的(DD/MM/YYYY),我想你使用DateTime.ParseExact Method推荐。

代码:

const string dateString = "12/02/2012"; 
CultureInfo provider = CultureInfo.InvariantCulture; 
// Use the invariant culture for the provider parameter, 
// because of custom format pattern. 
DateTime dateTime = DateTime.ParseExact(dateString, "dd/MM/yyyy", provider); 
Console.WriteLine(dateTime); 

此外,我认为这可能是一点点快于DateTime.Parse Method,因为Parse方法试图解析时间串的几次交涉。

2

,你也可以使用正则表达式得到字符串 “05/11/2010” DTB的

public string getYear(string str) 
{ 
    return (string)Regex.Match(str, @"\d{4}").Value; 
} 

var result = getYear("05/11/2010"); 

2010 
+1

这也匹配我的电话号码的前4位数字,出于某种原因以字符串形式返回年份。 – john 2017-08-01 01:31:45

+2

肯定,但如果问题只在日期格式它会起作用。 – 2017-08-01 01:34:14

0

变,我使用:

string Year = DateTime.Parse(DateTime.Now.ToString()).Year.ToString();