Convert String in Boost :: Gregorian :: Greg_Month
-
12-11-2019 - |
Domanda
Nella biblioteca della data di spinta, esiste una funzione di utilità per convertire le corde brevi del mese (ad esempio Jan, Feb, Mar, APR) per aumentare :: Gregorian :: Greg_month Tipo? La documentazione per la biblioteca non è eccezionale e non riesco a vedere nulla nelle intestazioni.
Soluzione
Un lavoro hacky in giro potrebbe essere:
#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>
int main(void)
{
auto ptr = boost::gregorian::greg_month::get_month_map_ptr();
if (ptr)
{
auto it = ptr->begin();
for(; it != ptr->end(); ++it)
{
std::cout << it->first << " " << it->second << '\n';
}
}
}
Questa mappa contiene una mappatura tra tutti i nomi brevi/lunghi e il breve necessario per creare un greg_month
esempio. Ho solo bisogno di creare un po 'di involucro attorno a esso ...
Per la scoperta di Graeme, c'è una funzione di convenienza che lo avvolge già boost::date_time::month_str_to_ushort<>
Altri suggerimenti
Sì, ci sono sfaccettature per la data di spinta che possono essere utilizzate per creare locali e mettere in flussi.
Fai attenzione, però, se hai intenzione di stampare o analizzare un gran numero di date e orari che non si crea la sfaccettatura e la localizzazione per ognuno di quelli che analizzi.
Aspetto qui Per la documentazione sull'inserimento di date. Alcuni dei loro esempi usano nomi di brevi mesi, che sembra avere %b
come è Specificatore di formato