Вот небольшая подпрограмма на C, она имитирует date на русском. Ей требуются stdio.h, string.h, time.h, ctype.h.
Последний аргумент можно задавать нулём, второй должен быть ненулевым, первый для результата.
void ctime2date(char *str,int nr,time_t *tsec){
time_t tim;
char bitm[8],buf[64];
if(tsec==0)tim=time(NULL);else tim=time(tsec);
int n,ne;
strcpy(buf,ctime(&tim));//fprintf(stdout,"%s\n",buf);
if(nr==0){strcpy(str,buf);return;}
ne=3;buf[ne]=0;strcpy(bitm,buf);bitm[0]=tolower(bitm[0]);
if(strcmp(bitm,"mon")==0){strcpy(str,"Пн");goto nmon;}
if(strcmp(bitm,"tue")==0){strcpy(str,"Вт");goto nmon;}
if(strcmp(bitm,"wed")==0){strcpy(str,"Ср");goto nmon;}
if(strcmp(bitm,"thu")==0){strcpy(str,"Чт");goto nmon;}
if(strcmp(bitm,"fri")==0){strcpy(str,"Пт");goto nmon;}
if(strcmp(bitm,"sat")==0){strcpy(str,"Сб");goto nmon;}
if(strcmp(bitm,"sun")==0){strcpy(str,"Вс");goto nmon;}
nmon:str[4]=32;ne=7;buf[ne]=0;strcpy(bitm,buf+ne-3);bitm[0]=tolower(bitm[0]);
if(strcmp(bitm,"jan")==0){strcpy(str+5,"Янв");goto ndat;}
if(strcmp(bitm,"feb")==0){strcpy(str+5,"Фев");goto ndat;}
if(strcmp(bitm,"mar")==0){strcpy(str+5,"Мар");goto ndat;}
if(strcmp(bitm,"apr")==0){strcpy(str+5,"Апр");goto ndat;}
if(strcmp(bitm,"may")==0){strcpy(str+5,"Май");goto ndat;}
if(strcmp(bitm,"jun")==0){strcpy(str+5,"Июн");goto ndat;}
if(strcmp(bitm,"jul")==0){strcpy(str+5,"Июл");goto ndat;}
if(strcmp(bitm,"aug")==0){strcpy(str+5,"Авг");goto ndat;}
if(strcmp(bitm,"sep")==0){strcpy(str+5,"Сен");goto ndat;}
if(strcmp(bitm,"Oct")==0){strcpy(str+5,"Окт");goto ndat;}
if(strcmp(bitm,"nov")==0){strcpy(str+5,"Ноя");goto ndat;}
if(strcmp(bitm,"dec")==0){strcpy(str+5,"Дек");goto ndat;}
ndat:str[11]=32;if(buf[10]==32){n=0;ne=10;}else{n=1;ne=9;bitm[0]=48;}buf[ne]=0;
strcpy(bitm+n,buf+8);strcpy(str+12,bitm);str[14]=32;ne+=9;buf[ne]=0;
strcpy(str+15,buf+ne-8);str[23]=32;ne+=5;buf[ne]=0;strcpy(str+24,buf+ne-4);
return ;}