2012-05-30 7 views

cevap

8

1. Tarih dizesini ayrıştırma

Tarih dizesini ayrıştırma. Tarihi gösteren kelimeyi bölen ve ayrıştıran küçük bir işlev sağladım. Tarihler için bazı daha uygun isimler ekledim, ancak gerekirse daha fazlasını kolayca ekleyebilirim, küçük harfe dönüştürdüğümü fark ettim! Eşleme tarihini hesaplamak için XQuery date and time functions kullanır.

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. Biçim

Şimdi XQuery 3.0 fonksiyonunu format-date(...) kullandığınız tarih İhtiyacınız gibi tarih dizesi biçimlendirmek için (Ben senin XQuery motoru, ben yok bu örnek için kullanılan baseX destekliyorsa umut) : o, sen month ve day için year-from-date(...) ve uygun işlevlerini kullanmak zorunda kalacak yoksa

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

, biçimlendirme bazı numarasını kullanmak ve kendinizi bağlamak.

+0

+1, Aww Böyle şeyler. Varlığımızı güncellemek için çalıştığım yeri gerçekten ikna etmeliyiz! – matchew