"развернуть" дату задом-наперёд... - страница 2

 

можно и так извратиться

string format(datetime time, string format){
   string DD = TimeDay(time);
   if (StringLen(DD)==1) DD = "0"+DD;
   string MM = TimeMonth(time);
   if (StringLen(MM)==1) MM = "0"+MM;
   string YYYY = TimeYear(time);
   string YY = StringSubstr(YYYY,2,0);
   string hh = TimeHour(time);
   if (StringLen(hh)==1) hh = "0"+hh;
   string mm = TimeMinute(time);
   if (StringLen(mm)==1) mm = "0"+mm;
   string ss = TimeSeconds(time);
   if (StringLen(ss)==1) ss = "0"+ss;
   
   if (format=="dd.mm.yyyy hh:mm:ss") return(DD+"."+MM+"."+YYYY+" "+hh+":"+mm+":"+ss);   
   if (format=="dd.mm.yyyy hh:mm.ss") return(DD+"."+MM+"."+YYYY+" "+hh+":"+mm+"."+ss);   
   if (format=="dd/mm/yyyy hh:mm:ss") return(DD+"/"+MM+"/"+YYYY+" "+hh+":"+mm+":"+ss);   
   if (format=="dd/mm/yyyy hh:mm.ss") return(DD+"/"+MM+"/"+YYYY+" "+hh+":"+mm+"."+ss);   
   if (format=="ddmmyyyyhhmmss") return(DD+MM+YYYY+hh+mm+ss);   
   if (format=="dd.mm.yyyy hh:mm") return(DD+"."+MM+"."+YYYY+" "+hh+":"+mm);   
   if (format=="dd.mm.yyyy hh") return(DD+"."+MM+"."+YYYY+" "+hh);
   if (format=="dd.mm.yyyy hh") return(DD+"."+MM+"."+YYYY+" "+hh);
   if (format=="dd.mm.yyyy") return(DD+"."+MM+"."+YYYY);
   if (format=="dd.mm.yy") return(DD+"."+MM+"."+YY);
   if (format=="dd.mm") return(DD+"."+MM);
   if (format=="mm.yyyy") return(MM+"."+YYYY);
   if (format=="dd/mm/yyyy hh:mm") return(DD+"/"+MM+"/"+YYYY+" "+hh+":"+mm);   
   if (format=="dd/mm/yyyy hh") return(DD+"/"+MM+"/"+YYYY+" "+hh);
   if (format=="dd/mm/yyyy hh") return(DD+"/"+MM+"/"+YYYY+" "+hh);
   if (format=="dd/mm/yyyy") return(DD+"/"+MM+"/"+YYYY);
   if (format=="dd/mm/yy") return(DD+"/"+MM+"/"+YY);
   if (format=="dd/mm") return(DD+"/"+MM);
   if (format=="mm/yyyy") return(MM+"/"+YYYY);
   
   if (format=="hh:mm:ss") return(hh+":"+mm+":"+ss);
   if (format=="hh:mm.ss") return(hh+":"+mm+"."+ss);
   if (format=="hh.mm.ss") return(hh+"."+mm+"."+ss);
   if (format=="hh:mm") return(hh+":"+mm);
   if (format=="hh.mm") return(hh+"."+mm);
   if (format=="mm:ss") return(mm+":"+ss);   
   if (format=="mm.ss") return(mm+"."+ss); 
}
 
keekkenen >>:

можно и так извратиться

Круто!

Следующий шаг. Делаем блок в этой функции, который анализирует формат ввода. Затем формирует дату по образу и подобию. Т.е. любые форматы!!!

Это будет покруче, чем у Игоря. И должно быть шедевром программерской мысли с достойным помещением в копилку.

======

Не забудте про SMS по праздникам... :-))

 

не для копилки это не достойно.. просто на скорую руку написано было..

по нормальному нужно иначе написать, с качественной обработкой разделителей в дате и времени, а не так как есть..

 
Извините за офф. топ. Но чтобы не создавать тему, я задам вопос здесь. Хм. До какова числа на форыксе "каникулы" ? И с какова числа?
 
Shniperson >>:
Извините за офф. топ. Но чтобы не создавать тему, я задам вопос здесь. Хм. До какова числа на форыксе "каникулы" ? И с какова числа?

На Форексе каникул не бывает. Бывают каникулы у брокеров и ДЦ.

 
keekkenen >>:

не для копилки это не достойно.. просто на скорую руку написано было..

по нормальному нужно иначе написать, с качественной обработкой разделителей в дате и времени, а не так как есть..

Так, про то и говорю. Надо делать анализатор форматов. Это достойно копилки.

 
kombat >>:

Вариант добавления нулей...


string DateRev(datetime d)
{
string lzd="", lzm="";
if(TimeDay(d)  <10) lzd="0";
if(TimeMonth(d)<10) lzm="0";
string date=lzd+TimeDay(d)+"."+lzm+TimeMonth(d)+"."+TimeYear(d);
return(date);
}
//---
string DateRevLocal()
{
datetime d=TimeLocal();
string lzd="", lzm="";
if(TimeDay(d)  <10) lzd="0";
if(TimeMonth(d)<10) lzm="0";
string date=lzd+TimeDay(d)+"."+lzm+TimeMonth(d)+"."+TimeYear(d);
return(date);
}
//---
string DateRevCurrent()
{
datetime d=TimeCurrent();
string lzd="", lzm="";
if(TimeDay(d)  <10) lzd="0";
if(TimeMonth(d)<10) lzm="0";
string date=lzd+TimeDay(d)+"."+lzm+TimeMonth(d)+"."+TimeYear(d);
return(date);
}

granit77

спасибо что обратил на это внимание...!

;)))



то же самое,

Так и код короче и быстрее работает... и красивей


string DATEforKOMBAT =  StringSubstr( TimeToStr( TimeCurrent() ), 8,2 ) +"."+ StringSubstr( TimeToStr( TimeCurrent() ), 5, 2 ) + "." + StringSubstr( TimeToStr( TimeCurrent()) , 0, 4 );


 

Ух! действительно...

спасиб!


Слегка поправил для универсальности:

datetime tr=TimeCurrent();
string DATEr=StringSubstr(TimeToStr(tr),8,2)+"."+StringSubstr(TimeToStr(tr),5,2)+"."+StringSubstr(TimeToStr(tr),0,4);
 

Вот вариант проще и без лишних извращений..

string iDate=TimeToStr(TimeCurrent(),TIME_DATE);
Print(iDate);
iDate=StringSubstr(iDate,8,2)+StringSubstr(iDate,4,3)+"."+StringSubstr(iDate,0,4);
Print(iDate);

Принты добавлены для просмотра..

Результаты работы..

2009.10.23 14:40:53 geOsMA GOLD,H1: 23.10.2009
2009.10.23 14:40:53 geOsMA GOLD,H1: 2009.10.23

Больше шороха чем компактного и простого решения..

 
forte928:

Вот вариант проще и без лишних извращений..

Можно укоротить ещё на 4 символа :-)
iDate=StringSubstr(iDate,8,2)+StringSubstr(iDate,4,4)+StringSubstr(iDate,0,4);
Причина обращения: