2013-04-10 5 views
14

Czy istnieje biblioteka do pracy z historycznymi (dużymi) datami (np. 11,043 pne)? Zdobądź wiek, tysiąclecie?biblioteka do pracy z historycznymi (dużymi) datami i godzinami (np. 11,043 pne)?

+6

Jestem ciekawy: o czym pracujesz? –

+0

@JayRiggs games. – manking

+0

Jakie funkcje biblioteczne stosujesz? Standardowe, takie jak AddDays(), DateDiff() i sformatowany ToString()? Jakiej precyzji potrzebujesz - dni, sekundy, milisekundy? Czy interesują Cię imiona dni w tygodniu? Jeśli chcesz tylko dostać wieki lub tysiąclecie, podziel się przez 100 lub 1000 i skończ z nim, jeśli chcesz więcej, to zastanów się, co to jest, ponieważ jeśli jest to coś bardzo konkretnego, prawdopodobnie lepiej byłoby zrobić to samemu. –

Odpowiedz

2

W przypadku dat i czasów w ogóle istnieją standardowe klasy czasowe C++ 11, a biblioteka Glib oferuje klasę GDateTime z powiązaniem C++ Glib :: DateTime w glibmm. Być może biblioteki Boost również mają podobny interfejs.

Jeśli potrzebujesz historycznych dat, takich jak dinozaury, możesz napisać własną, prostą lekcję (chyba że jedna z opcji, o których wspomniałem, jest wystarczająco dobra, w takim przypadku samodzielne obliczanie wieku lub milenium jest bardzo łatwe).

Edycja: Większość implementacji reprezentuje czas jako liczbę sekund lub mikrosekund w czasie Unix, tj. Od 1970, co oznacza, że ​​nawet 64-bitowa liczba całkowita może nie być w stanie reprezentować czasów starożytnych (możesz spróbować obliczenia lub przeszukiwania sieci lub czytanie na Wikipedii o tych limitach).

W tym przypadku dobrym rozwiązaniem może być użycie oddzielnej klasy AncientTime, która ma zaledwie rok, a wszystko, czego potrzebujesz, np. Miesiąc/dzień/godzina, może zostać uzupełnione prostą klasą DateTime, w której może zignorować rok lub zachować normalizację do 0 przez cienkie opakowanie.

Powiązane problemy