Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- stock date(formatt[], bool:block_unk = false)
- {
- new string[128] = "";
- new cdate[3], ctime[3];
- gettime(ctime[0], ctime[1], ctime[2]);
- getdate(cdate[0], cdate[1], cdate[2]);
- for(new i = 0; i < strlen(formatt); i++)
- {
- switch(formatt[i])
- {
- /*************************
- Day
- *************************/
- case 'd': format(string, sizeof(string), "%s%02d", string, cdate[2]);
- case 'D':
- {
- switch(nGetDate())
- {
- case 0: strcat(string, "Sat");
- case 1: strcat(string, "Sun");
- case 2: strcat(string, "Mon");
- case 3: strcat(string, "Tue");
- case 4: strcat(string, "Wed");
- case 5: strcat(string, "Thu");
- case 6: strcat(string, "Fri");
- }
- }
- case 'j': format(string, sizeof(string), "%s%d", string, cdate[2]);
- case 'l':
- {
- switch(nGetDate())
- {
- case 0: strcat(string, "Saturday");
- case 1: strcat(string, "Sunday");
- case 2: strcat(string, "Monday");
- case 3: strcat(string, "Tuesday");
- case 4: strcat(string, "Wednesday");
- case 5: strcat(string, "Thursday");
- case 6: strcat(string, "Friday");
- }
- }
- case 'N': format(string, sizeof(string), "%s%d", string, nGetDate());
- case 'S':
- {
- switch(cdate[2])
- {
- case 1, 21, 31: strcat(string, "st");
- case 2, 22: strcat(string, "nd");
- case 3, 23: strcat(string, "rd");
- default: strcat(string, "th");
- }
- }
- case 'w': format(string, sizeof(string), "%s%d", string, nGetDate(-1));
- case 'z': format(string, sizeof(string), "%s%d", string, getdate());
- /*******************************
- Week
- *******************************/
- case 'W':
- {
- new nbw, obw;
- new weeksMonth[12] = {4, 4, 4, 4, 5, 4, 5, 5, 4, 4, 4, 5};
- for(new x = 0; x < sizeof(weeksMonth); x++)
- {
- nbw += weeksMonth[x];
- if(obw < getdate() / 7 < nbw) break;
- else obw = nbw;
- }
- format(string, sizeof(string), "%s%d", string, nbw);
- }
- /**************************
- Month
- **************************/
- case 'F':
- {
- switch(cdate[1])
- {
- case 1: strcat(string, "January");
- case 2: strcat(string, "February");
- case 3: strcat(string, "March");
- case 4: strcat(string, "April");
- case 5: strcat(string, "May");
- case 6: strcat(string, "June");
- case 7: strcat(string, "July");
- case 8: strcat(string, "August");
- case 9: strcat(string, "September");
- case 10: strcat(string, "October");
- case 11: strcat(string, "November");
- case 12: strcat(string, "December");
- }
- }
- case 'm': format(string, sizeof(string), "%s%02d", string, cdate[1]);
- case 'M':
- {
- switch(cdate[1])
- {
- case 1: strcat(string, "Jan");
- case 2: strcat(string, "Feb");
- case 3: strcat(string, "Mar");
- case 4: strcat(string, "Apr");
- case 5: strcat(string, "May");
- case 6: strcat(string, "Jun");
- case 7: strcat(string, "Jul");
- case 8: strcat(string, "Aug");
- case 9: strcat(string, "Sep");
- case 10: strcat(string, "Oct");
- case 11: strcat(string, "Nov");
- case 12: strcat(string, "Dec");
- }
- }
- case 'n': format(string, sizeof(string), "%s%d", string, cdate[1]);
- case 't':
- {
- new d;
- switch(cdate[1])
- {
- case 1: d = 31;
- case 2:
- {
- if(cdate[0] % 4 != 0) d = 28;
- else d = 29;
- }
- case 3: d = 31;
- case 4: d = 30;
- case 5: d = 31;
- case 6: d = 30;
- case 7: d = 31;
- case 8: d = 31;
- case 9: d = 30;
- case 10: d = 31;
- case 11: d = 30;
- case 12: d = 31;
- }
- format(string, sizeof(string), "%s%d", string, d);
- }
- /*************************************
- Year
- *************************************/
- case 'L':
- {
- new b = false;
- if(cdate[0] % 4 == 0) b = true;
- format(string, sizeof(string), "%s%d", string, b);
- }
- case 'Y': format(string, sizeof(string), "%s%d", string, cdate[0]);
- case 'y':
- {
- new dat[5];
- valstr(dat, cdate[0]);
- format(string, sizeof(string), "%s%s", string, dat[2]);
- }
- // To do : case 'o', once I'll know how useful it could be
- /********************************
- Hours
- ********************************/
- case 'a':
- {
- if(0 <= ctime[0] < 12) strcat(string, "am");
- else strcat(string, "pm");
- }
- case 'A':
- {
- if(0 <= ctime[0] < 12) strcat(string, "AM");
- else strcat(string, "PM");
- }
- case 'g': format(string, sizeof(string), "%s%d", string, (ctime[0] > 12 ? ctime[0]-12 : ctime[0]));
- case 'G': format(string, sizeof(string), "%s%d", string, ctime[0]);
- case 'h': format(string, sizeof(string), "%s%02d", string, (ctime[0] > 12 ? ctime[0]-12 : ctime[0]));
- case 'H': format(string, sizeof(string), "%s%02d", string, ctime[0]);
- case 'i': format(string, sizeof(string), "%s%02d", string, ctime[1]);
- case 's': format(string, sizeof(string), "%s%02d", string, ctime[2]);
- // faire case 'u' quand je saurais ร quoi รงa sert
- /****************************************
- Complete date and hours
- ****************************************/
- case 'c': format(string, sizeof(string), "%s%d-%d-%dT%d:%d:%d", string, cdate[0], cdate[1], cdate[2], ctime[0], ctime[1], ctime[2]);
- case 'r':
- {
- switch(nGetDate())
- {
- case 0: strcat(string, "Sat");
- case 1: strcat(string, "Sun");
- case 2: strcat(string, "Mon");
- case 3: strcat(string, "Tue");
- case 4: strcat(string, "Wed");
- case 5: strcat(string, "Thu");
- case 6: strcat(string, "Fri");
- }
- format(string, sizeof(string), "%s, %d ", string, cdate[2]);
- switch(cdate[1])
- {
- case 1: strcat(string, "Jan");
- case 2: strcat(string, "Feb");
- case 3: strcat(string, "Mar");
- case 4: strcat(string, "Apr");
- case 5: strcat(string, "May");
- case 6: strcat(string, "Jun");
- case 7: strcat(string, "Jul");
- case 8: strcat(string, "Aug");
- case 9: strcat(string, "Sep");
- case 10: strcat(string, "Oct");
- case 11: strcat(string, "Nov");
- case 12: strcat(string, "Dec");
- }
- format(string, sizeof(string), "%s %d %02d:%02d:%02d", string, cdate[0], ctime[0], ctime[1], ctime[2]);
- }
- case 'u': format(string, sizeof(string), "%s%d", string, gettime());
- default: if(!block_unk) format(string, sizeof(string), "%s%c", string, formatt[i]);
- }
- }
- return string;
- }
- stock nGetDate(addsth = 0, cdate[3] = {0, 0, 0})
- {
- if(cdate[0] == 0) getdate(cdate[0], cdate[1], cdate[2]);
- new v1, v2;
- if (cdate[1] <= 2)
- {
- cdate[1] += 12;
- --cdate[0];
- }
- v1 = cdate[0] % 100;
- v2 = cdate[0] / 100;
- return (((cdate[2] + (cdate[1]+1)*26/10 + v1 + v1/4 + v2/4 - 2*v2) % 7) + addsth);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement