2012-05-30 24 views

Respuesta

8

1. Analizar la cadena de fecha

Analizar la cadena de fecha. Proporcioné una pequeña función que divide la palabra que indica la fecha y la analiza. Agregué algunos nombres más convenientes para las fechas, pero puede agregar fácilmente más si es necesario, ¡tenga en cuenta que convierto a minúsculas! Utiliza XQuery date and time functions para calcular la fecha de coincidencia.

declare function local:from-relative-date($string as xs:string) as xs:date { 
    switch (lower-case(substring-before($string, ","))) 
     case "today"    return current-date() 
     case "yesterday"   return current-date() - xs:dayTimeDuration('P1D') 
     case "day before yesterday" return current-date() - 2 * xs:dayTimeDuration('P1D')  
     case "tomorrow"    return current-date() + xs:dayTimeDuration('P1D')  
     case "day after tomorrow" return current-date() + 2 * xs:dayTimeDuration('P1D')  
     default      return error(xs:QName("XPTY0004"), "Unknown Date") 
}; 

2. Formato de la fecha

Ahora use la función de XQuery 3.0 format-date(...) (espero que su motor XQuery soporta, BaseX que he usado para este ejemplo no) para dar formato a la cadena de fecha que lo necesitas :

format-date(local:from-relative-date("Yesterday, 22:13"), "[Y]-[M00]-[D00]") 

Si no lo hace, usted tendrá que usar year-from-date(...) y funciona de acuerdo a month y day, utilizar algún formato de número y concatenar a sí mismo.

+0

+1, Aww Es cosas como esta. ¡Realmente tenemos que convencer al lugar donde trabajo para actualizar nuestro existir! – matchew

Cuestiones relacionadas