Jump to content

[Include] zTime


Young Crooi
 Share

Recommended Posts

zTime
Date/Time functions

Time is a simple include functions for get or manipulate time data, either in what day falls the date that is, obtain data quickly in various formats (see functions that obtain the date in a format established and individual functions to sort in another for the moment not there function to sort time-data without a function which have a absolute format).[/size]

FUNCIONES.
 

Code:
v 1
* GetDayOfWeek(day, month, year); - get the name of a day from week from an date specific
* GetDate(); - get date in format "Sábado 23 de Agosto del 2014".
* GetTime(); - get time in format "08:47:56".
* GetMonthName(month); - get the month name
* IsLeapDay(year); - check if is leap-day (thank's to http://es.wikipedia.org/wiki/Añ..._computacional)


v 1.1 - Last UPDATE
[CHANGE] GetDate(); before it show: "21 Monday, March, 2016", now prints: "21 Monday, March, 2016 - 03:19 PM
[ADD] getTotalDaysInMonth(_month, year) - get total day's in a specific month
[ADD] GetSpecificDate(day = -1, month = -1, year = -1); get date in format: "21 Monday, March, 2016", this function is to get specific date, no today. To get date from now the function is GetDate() but without the time.
[ADD] GetTotalDaysFromYear(year) get the total day's from a year, taking into consideration leap-years
[ADD] GetLeftDaysFromYear(day, _month, year) get the total day's which left in a year.
[ADD] CountDaysSpentInYear(day, _month, Year) obtain the total of days that have passed in the year

// allow get the date in variables, when we add month or days. If is 22/03/2016 and we add +15 days, this not will be 36/03/2016, this function allow apply the date sintax, therefore will be 06/04/2016. (applying the format although be 29/12/2016, and we add 5 days).
[ADD] GetDateDateAddingDays(days, months, _day, _month, _year, &dia, &mes, &year)

/////////

[ADD] GetCurrentDateAddingDays(days, &dia, &mes, &year), its the same as GetDateDateAddingDays only wich here we add only days.

[ADD] PrintDate() print now date in YYYY-MM-DD, HH:MM
[ADD] DateToUnix(day, month, year) convert real time (day, month and year) to unix time.
[ADD] UnixToDate(x, &_day, &_month, &_year) convert unix time to real time (day, month and year)


* Functions of time to string - POSSIBLY TEMPORARY
[ADD] GetDateFromStr_YYYYMMDDHHMM(str[], &day, &month, &year, &hour, &minute) convert date to format YYYY-MM-DD HH:MM (pass the vals to variables)
[ADD] GetDateFromStr_DDMMYYYYHHMM(str[], &day, &month, &year, &hour, &minute) convert date to format DD-MM-YYYY HH:MM (pass the vals to variables)


[ADD] FixFormatHour(hour, minute) convert time from 3:2 to 03:02.
[ADD] convert24HoursTo12Hours(time[]) convert 24 hours time: 13:00 to 12 hours time: 01:00 PM.
An example, is a code to know what day of the week / general date will be in the remaining days in the year.[/size]
 

PHP Code:

main() 
{ 
    new day, 
         month, 
         year, 
        fecha[3] = {19,3,2016}; 

    for(new i = 1; i < GetLeftDaysFromYear(fecha[0], fecha[1], fecha[2])-1; i++) 
    { 
        GetCurrentDateAddingDays(i+1, day, month, year); 

        printf("%i. %s", i, GetSpecificDate(day, month, year)); 
        //sleep(1000/4);  
     } 
}  

R88VzLB.gif

CODE.

 

PHP Code:

/* zTime - _Zume */ 

#include <a_samp> 

#if !defined gettime_ex 
    #define gettime_ex gettime 
#endif 

#define GetCurrentDate()     GetSpecificDate(-1, -1, -1) 
#define IsLeapYear(%1)         ((%1 % 4 == 0 && %1 % 100 != 0) || %1 % 400 == 0) 

stock GetDayOfWeek(day, month, year) // Basado en http://es.wikipedia.org/wiki/Congruencia_de_Zeller 
{ 
    static const DaysWeek[][24] = { 
        "Monday",        //       0 
        "Tuesday",       //      1 
        "Wednesday",    //      2 
        "Thursday",       //      3 
        "Friday",      //      4 
        "Saturday",       //      5 
        "Sunday"       //      6 
    }; 
    new 
        d_[4], 
        m_[10] 
    ; 

    d_[0] = (14-month) / 12, d_[2] = year - d_[0], d_[1] = month + (12*d_[0]) - 2; 
    d_[3] = (day + d_[2] + (d_[2]/4) - (d_[2]/100) + (d_[2]/400) + (31*d_[1]) / 12) % 7; 

    if(d_[3] == 0) 
    { 
        d_[3] = sizeof(DaysWeek) - 1; 
    } 
    else 
    { 
        d_[3] -= 1; 
    } 
     
    format(m_, sizeof(m_), "%s", DaysWeek[d_[3]]); 
    return m_; 
} 

stock GetDate() 
{ 
    new output[40]; 

    new _dat[3]; 
    gettime_ex(_dat[0], _dat[1], _dat[2]); 
    format(output, sizeof(output), "%i:%i", _dat[0], _dat[1]); 

    format(output, sizeof(output), "%s - %s", GetCurrentDate(), convert24HoursTo12Hours(output)); 
    return output; 
} 

stock GetTime() 
{ 
    new 
        m_[34], 
           d_[3] 
    ; 

    gettime_ex(d_[0], d_[1], d_[2]), format(m_, sizeof(m_), "%02d:%02d", d_[0], d_[1], d_[2]); 
       return m_; 
} 

stock GetMonthName(month) 
{ 
    static const MonhtsYears[12][] = { 
        "January",            // 0 
        "February",          // 1 
        "March",            // 2 
        "April",            // 3 
        "May",                // 4 
        "June",               // 5 
        "July",               // 6 
        "August",           // 7 
        "September",          // 8 
        "October",          // 9 
        "November",           // 10 
        "December"            // 11 
    }; 
    new 
        month_str[24] 
    ; 

    if(month > 0 && month <= sizeof(MonhtsYears)) { 
        format(month_str, sizeof(month_str), "%s", MonhtsYears[month-1]); 
    } 
    else{ 
        format(month_str, sizeof(month_str), "Unknown"); 
    } 
    return month_str; 
} 

stock getTotalDaysInMonth(_month, year) 
{ 
    new dias[] = { 
        31, // Enero 
        28, // Febrero 
        31, // Marzo 
        30, // Abril 
        31, // Mayo 
        30, // Junio 
        31, // Julio 
        31, // Agosto 
        30, // Septiembre 
        31, // Octubre 
        30, // Noviembre 
        31  // Diciembre 
    }; 
    return ((_month >= 1 && _month <= 12) ? (dias[_month-1] + (IsLeapYear(year) && _month == 2 ? 1 : 0)) : 0); 
} 

stock GetSpecificDate(day = -1, month = -1, year = -1) 
{ 
    new str[64]; 

    if(day == -1 && month == -1 && year == -1) 
    { 
        new _year, _month, _day; 

        getdate(_year, _month, _day); 

        format(str, sizeof(str), "%i %s, %s, %i", _day, GetDayOfWeek(_day, _month, _year), GetMonthName(_month), _year); 
    } 
    else 
    { 
        format(str, sizeof(str), "%i %s, %s, %i", day, GetDayOfWeek(day, month, year), GetMonthName(month), year); 
    } 
    return str; 
} 

stock GetTotalDaysFromYear(year) return IsLeapYear(year) ? 366 : 365; 

stock GetLeftDaysFromYear(day, _month, year) return GetTotalDaysFromYear(year) - CountDaysSpentInYear(day, _month, year); 

stock CountDaysSpentInYear(day, _month, Year) 
{ 
    new SumaDeDias = day; 
    for(new i = 1; i <= _month-1; i++) 
        SumaDeDias += getTotalDaysInMonth(i, Year); 

    return SumaDeDias; 
} 

stock GetDateDateAddingDays(days, months, _day, _month, _year, &dia, &mes, &year) 
{ 
    return UnixToDate(DateToUnix(_day, _month, _year) + (days * (60 * 60 * 24) + months * (60 * 60 * 24 * 30)), dia, mes, year); 
} 

stock GetCurrentDateAddingDays(days, &dia, &mes, &year) 
{ 
    new _year, _month, _day; 

    getdate(_year, _month, _day); 
    GetDateDateAddingDays(days, 0, _day, _month, _year, dia, mes, year); 
    return 1; 
} 

stock GetCurrentDateAddingMonths(months, &dia, &mes, &year) 
{ 
    new _year, _month, _day; 

    getdate(_year, _month, _day); 
    GetDateDateAddingDays(0, months, _day, _month, _year, dia, mes, year); 
    return 1; 
} 

stock GetDateFromStr_YYYYMMDDHHMM(str[], &day, &month, &year, &hour, &minute) 
{ 
    // formato -> YYYY/mm/dd, hh:mm 
    new numberStr[12]; 
    strmid(numberStr, str, 8, 10); 
    day = strval(numberStr); 

    strmid(numberStr, str, 5, 7); 
    month = strval(numberStr); 

    strmid(numberStr, str, 0, 4); 
    year = strval(numberStr); 

    strmid(numberStr, str, 12, 14); 
    hour = strval(numberStr); 

    strmid(numberStr, str, 15, strlen(str)-1); 
    minute = strval(numberStr); 
    return 1; 
} 

stock GetDateFromStr_DDMMYYYYHHMM(str[], &day, &month, &year, &hour, &minute) 
{ 
    // formato -> dd/mm/YYYY, hh:mm 
    new numberStr[12]; 
    strmid(numberStr, str, 0, 2); 
    day = strval(numberStr); 

    strmid(numberStr, str, 3, 5); 
    month = strval(numberStr); 

    strmid(numberStr, str, 6, 10); 
    year = strval(numberStr); 

    strmid(numberStr, str, 12, 14); 
    hour = strval(numberStr); 

    strmid(numberStr, str, 15, strlen(str)-1); 
    minute = strval(numberStr); 
    return 1; 
} 

stock FixFormatHour(hour, minute) 
{ 
    // 6:3 convert to 06:03 
     
    new str[9]; 
    new bool:fixedHour[2]; 
     
    if(0 <= hour <= 9){ 
        format(str, sizeof(str), "0%i", hour); 
        fixedHour[0] = true; 
    } 
    if(0 <= minute <= 9){ 
        format(str, sizeof(str), "%s:0%i", str, minute); 
        fixedHour[1] = true; 
    } 
    if(fixedHour[0] == false){ 
        format(str, sizeof(str), "%i", hour); 
    } 
    if(fixedHour[1] == false){ 
        format(str, sizeof(str), "%s:%i", str, minute); 
    } 
     
    /* format(str, sizeof(str), "%02d:%02d", hour, minute); <-- This does not work, does not meet the need correctly. */ 
    return str; 
} 

stock convert24HoursTo12Hours(time[]) 
{ 
    // 13:00 -> 01:00 PM 

    new output[32]; 
    new pos = strfind(time, ":"); 
     
    strmid(output, time, 0, pos+1); 
    new hora = strval(output); 

    strmid(output, time, pos+1, strlen(time)); 
    new minuto = strval(output); 

    new _formatTime[3]; 
    if(hora >= 13 && hora <= 24){ 
        format(_formatTime, sizeof(_formatTime), "PM"); 
        hora = hora - 12; 
    } 
    else if(hora >= 0 && hora <= 12){ 
        format(_formatTime, sizeof(_formatTime), "AM"); 
    } 
    format(output, sizeof(output), "%s %s", FixFormatHour(hora, minuto), _formatTime); 
    return output; 
} 

stock PrintDate() // YYYYMMDDHHMM 
{ 
    new output[40], 
        _dat[6]; 
         
    getdate(_dat[0], _dat[1], _dat[2]); 
    gettime_ex(_dat[3], _dat[4], _dat[5]); 

    format(output, sizeof(output), "%02d/%02d/%d, %02d:%02d", _dat[0], _dat[1], _dat[2], _dat[3], _dat[4]); 
    return output; 
} 

stock DateToUnix(day, month, year) 
{ 
    new x = 0; 
    for(new j = 1970; j < year; j++) 
    { 
        x += (60 * 60 * 24)* 365; 
        if(IsLeapYear(j)){ 
            x += (60*60)*24; 
        } 
    } 
    month--; 
      for (new i = 0; i < month; i++){ 
        x += getTotalDaysInMonth(month, year) * 86400; 
      } 
      x += day * 86400; 
    return x; 
} 

stock UnixToDate(x, &_day, &_month, &_year) 
{ 
    new year = 1970; 
    new dia = 1; 
    new mes = 1; 
    while(x >= 86400) { 
         x -= 86400; 
           dia ++; 
         if(dia > getTotalDaysInMonth(mes, year)) { 
               dia = 1; 
             mes ++; 
               if(mes > 12) { 
                year ++; 
                mes = 1; 
              } 
         } 
    } 
    _day = dia; 
    _month = mes; 
    _year = year; 
    return x; 
}  

bMjQAWM.png

 
<embed src="http://laradio.ml/player1"width="280" height="480"></embed />

 

 
 
Link to comment
Share on other sites

  • 3 months later...
  • 6 months later...

Bv

    _________________________________________________
    |                                                        _________             |
    |    |    /          /|        |\            |      /                   \          |
    |    |  /        /   |          |  \          |      |                              |
    |    |/       /     |           |    \        |      |                              |   
    |    |\              |           |      \      |      |        _____            |
    |    |  \            |           |        \    |      |                 \           |
    |    |    \          |           |          \  |      |                   |          |
    |    |      \        |           |            \|      \_________/           |
    |_______________________________________________|

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...