1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| template<typename C, typename Tr, typename Al>
inline void concat_sep(std::basic_string<C, Tr, Al> & s,
std::basic_string<C, Tr, Al> const & str,
C const *sep, typename std::basic_string<C, Tr, Al>::size_type seplen,
C prefix=0, C suffix=0)
{
if (!str.empty())
{
if (!s.empty())
s.append(sep, seplen);
if (prefix != 0)
s+=prefix;
s+=str;
if (suffix != 0)
s+=suffix;
}
}
// if date is "YYYY/MM/DD" then function returns "Month DD, YYYY"
// if date is "YYYY/MM" then function returns "Month YYYY"
std::string StringDate(std::string const & date)
{
static const char *strmonth[]=
{"January","February","March","April","May","June"
,"July","August","September","October","November","December"};
std::string strdate;
const char *yearsep;
{
std::string month(date.substr(5,2));
unsigned m=string2ui(month);
if (1<=m && m<=12)
strdate+=strmonth[m-1];
}
if (date.length()==10)
{
std::string day(date.substr(8,2));
char d=day[1u];
//if (day.length()==2 && '0'<=d && d<='9')
{
strdate+=' ';
if (day[0u]<='0')
strdate+=d;
else
strdate+=day;
yearsep=", ";
}
}
else
yearsep=" ";
concat_sep(strdate,date.substr(0,4),yearsep,std::char_traits<char>::length(yearsep));// same as strlen(yearsep) !
return strdate;
}
std::string FormatDate(std::string & start)
{
//start is modified into YYYY, YYYY/MM or YYYY/MM/DD
std::string formated;
if (start.length()==4)
formated=start;
else if (start.substr(0,2)=="//")
formated=start=start.substr(2,4);
else if (start.substr(0,6)=="00/00/")
formated=start=start.substr(6,4);
else if (start.length()==10 && start.substr(2,4)=="/00/")
formated=StringDate(start=start.substr(6,4)+'/'+start.substr(0,2));
else if (start.length()==8 && start.substr(2,2)=="//")
formated=StringDate(start=start.substr(4,4)+'/'+start.substr(0,2));
else if (start.length()==10 && start[2u]=='/' && start[5u]=='/')
formated=StringDate(start=start.substr(6,4)+'/'+start.substr(0,3)+start.substr(3,2));
else if (start.length()==7 && start[2u]=='/')
formated=StringDate(start=start.substr(3,4)+'/'+start.substr(0,2));
return formated;
} |