2012-02-12 17 views

Respuesta

19

Puede utilizar el DateTime.Parse Method analizar la cadena en un valor DateTime cuales tiene una Year Property:

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

Dependiendo de la configuración de la cultura del sistema operativo, es posible que tenga que proporcionar una CultureInfo:

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

Esto debería funcionar para usted.

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

Lo sentimos, pero tal constructor de la clase 'DateTime' no existe. –

+0

@Serge Parece que tiene razón. Eso es lo que obtengo por intentar pensar tan tarde y no confirmar antes de publicar. : P –

+2

Evitaría el análisis sin especificar una cultura. – CodesInChaos

4

Si el formato de cadena de fecha es fija (dd/mm/aaaa), me gustaría recomendar el uso de DateTime.ParseExact Method.

El código:

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); 

También creo que podría ser un poco más rápido que DateTime.Parse Method, ya que el método Parse intenta analizar varias representaciones de cadena de fecha y hora.

2

usted podría también utilizado Regex para obtener el años en la cadena "05/11/2010"

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

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

2010 
+1

Esto también coincide con los primeros 4 dígitos de mi número de teléfono, y por alguna razón devuelve el año como una cadena. – john

+2

definitivamente, pero si la pregunta solo en formato de fecha funcionaría. –

0

Variante de DTB que yo uso:

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