Duda formato de hora
#1

hola bueno tengo una duda pasa que quiero tener el formato de hora de mi server con am y pm
tengo la siguiente funcion

Код:
public Clock(playerid)
{
    new string2[256];
    new hour, minute;
    gettime(hour,minute);
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
}
y quiero que en vez de 23:22 diga 11:22 saludos c: espero respuestas
Reply
#2

pawn Код:
public Clock(playerid)
{
    new string2[256];
    new hour, minute;
    gettime(hour,minute);
   
    if(hour == 23) hour = 11;
   
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
}
Reply
#3

Quote:
Originally Posted by OTACON
Посмотреть сообщение
pawn Код:
public Clock(playerid)
{
    new string2[256];
    new hour, minute;
    gettime(hour,minute);
   
    if(hour == 23) hour = 11;
   
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
}
En realidad:

pawn Код:
public Clock(playerid)
{
    new string2[256];
    new hour, minute;
    gettime(hour,minute);
    switch(hour)
    {
         case 13: hour = 1;
         case 14: hour = 2;
         case 15: hour = 3;
         case 16: hour = 4;
         case 17: hour = 5;
         case 18: hour = 6;
         case 19: hour = 7;
         case 20: hour = 8;
         case 21: hour = 9;
         case 22: hour = 10;
         case 23: hour = 11;
         case 24: hour = 0;
    }
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
    return 1;
}

Corrнgeme si me equivoco.
Reply
#4

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
En realidad:

pawn Код:
public Clock(playerid)
{
    new string2[256];
    new hour, minute;
    gettime(hour,minute);
    switch(hour)
    {
         case 13: hour = 1;
         case 14: hour = 2;
         case 15: hour = 3;
         case 16: hour = 4;
         case 17: hour = 5;
         case 18: hour = 6;
         case 19: hour = 7;
         case 20: hour = 8;
         case 21: hour = 9;
         case 22: hour = 10;
         case 23: hour = 11;
         case 24: hour = 12;
    }
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
    return 1;
}

Corrнgeme si me equivoco.
pero .. case 24: hour = 12; O_O? 24 no existe en el reloj, es 0 = 12 .

PD: y por ke me citaste a mi, yo le di un ejemplo de lo ke el pidio para ke se base ¬¬.
Reply
#5

Quote:
Originally Posted by OTACON
Посмотреть сообщение
pero .. case 24: hour = 12; O_O? 24 no existe en el reloj, es 0 = 12 .

PD: y por ke me citaste a mi, yo le di un ejemplo de lo ke el pidio para ke se base ¬¬.
No sabнa eso de la hora '24', gracias.


Te citй a tн, por que sabнa si el cуdigo que puse estaba bien jaja.

Saludos.
Reply
#6

pawn Код:
public Clock(playerid)
{
    new
        string2[256],
        hour,
        minute;
       
    gettime(hour, minute);
   
    if(hour > 12) hour -= 12;
    if(hour == 0) hour = 12;
   
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
   
    return 1;
}

Te doy el cуdigo por la ъnica y sencilla razуn de que ya te entregaron unos que te funcionarian, por lo que solo explicarte como hacerla seria estъpido ya que puede que nisiquiera hayas leido todo mi comentario.

Bien, ahora que dejй el cуdigo funcionando, te lo explico: la funciуn "gettime" retorna los segundos que han transcurrido desde el 1ero de Enero del aсo 1970, hasta el momento en que es llamada o usada la funciуn, esto, obvio, es deacuerdo a la hora y fecha que tenga el computador donde se ejecute la funciуn (el host). Este tiempo es llamado "Unix time" o "Tiempo unix". Cuando usamos alguno de sus parбmetros, segundo, minuto u hora, esta funciуn nos guardarб en la variable que dispongamos, el tipo de dato que deseemos deacuerdo a lo dicho anteriormente... este tiempo es en formato de 23 horas (desde 0 hasta 23)... entonces, como hacemos para transformar esta funciуn y que nos devuelva el formato de 12 horas? existen muchos mйtodos, pero el que utilizй en el cуdigo de arriba es condicionar, si la hora obtenida es mayor a 12 (osea que esta entre 13 y 23), le restamos 12 al valor... en este caso, si obtiene como hora, las 13 horas, al restarle 12 nos quedaria simplemente las 1... entiendes? bastante simple. Ahora, que ocurrirнa si la funciуn obtiene 0 horas que representa las 24 horas? el nъmero 0 no es mayor a 12 por lo que la condiciуn no se cumpliria, por lo que creamos otra condiciуn debajo, diciendo, si la hora obtenida es igual a 0, este se transforme en un 12.

Un mйtodo bastante simple pero te consumirнa mucho tiempo al momento de programar.


Edito, se me olvidу algo mas importante sobre el cуdigo que tienes...

https://sampforum.blast.hk/showthread.php?tid=170427
Reply
#7

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
pawn Код:
public Clock(playerid)
{
    new
        string2[256],
        hour,
        minute;
       
    gettime(hour, minute);
   
    if(hour > 12) hour -= 12;
    if(hour == 0) hour = 12;
   
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
   
    return 1;
}

Te doy el cуdigo por la ъnica y sencilla razуn de que ya te entregaron unos que te funcionarian, por lo que solo explicarte como hacerla seria estъpido ya que puede que nisiquiera hayas leido todo mi comentario.

Bien, ahora que dejй el cуdigo funcionando, te lo explico: la funciуn "gettime" retorna los segundos que han transcurrido desde el 1ero de Enero del aсo 1970, hasta el momento en que es llamada o usada la funciуn, esto, obvio, es deacuerdo a la hora y fecha que tenga el computador donde se ejecute la funciуn (el host). Este tiempo es llamado "Unix time" o "Tiempo unix". Cuando usamos alguno de sus parбmetros, segundo, minuto u hora, esta funciуn nos guardarб en la variable que dispongamos, el tipo de dato que deseemos deacuerdo a lo dicho anteriormente... este tiempo es en formato de 23 horas (desde 0 hasta 23)... entonces, como hacemos para transformar esta funciуn y que nos devuelva el formato de 12 horas? existen muchos mйtodos, pero el que utilizй en el cуdigo de arriba es condicionar, si la hora obtenida es mayor a 12 (osea que esta entre 13 y 23), le restamos 12 al valor... en este caso, si obtiene como hora, las 13 horas, al restarle 12 nos quedaria simplemente las 1... entiendes? bastante simple. Ahora, que ocurrirнa si la funciуn obtiene 0 horas que representa las 24 horas? el nъmero 0 no es mayor a 12 por lo que la condiciуn no se cumpliria, por lo que creamos otra condiciуn debajo, diciendo, si la hora obtenida es igual a 0, este se transforme en un 12.

Un mйtodo bastante simple pero te consumirнa mucho tiempo al momento de programar.


Edito, se me olvidу algo mas importante sobre el cуdigo que tienes...

https://sampforum.blast.hk/showthread.php?tid=170427
Gracias colega me sirvio de mucho tu informaciуn y tambien gracias a los otros.
Reply
#8

Quote:
Originally Posted by BruceDickinson
Посмотреть сообщение
Gracias colega me sirvio de mucho tu informaciуn y tambien gracias a los otros.

Es decir que string2 pasarнa a ser asн:
pawn Код:
public Clock(playerid)
{
    new
        string2[5+2+2+1], // %d:%d = 5 caracteres en total, + 2 de las horas, +2 de los minutos, +1 del carбcter nulo.
        hour,
        minute;
       
    gettime(hour, minute);
   
    if(hour > 12) hour -= 12;
    if(hour == 0) hour = 12;
   
    format(string2, sizeof(string2), "%d:%d", hour, minute);//second);
    TextDrawSetString(reloj[playerid], string2);
   
    return 1;
}
Vez de 256 caracteres usas 10.
Usando 256 estarнas utilizando 246 caracteres innecesarios.
(Basado en lo que te publico DesingMyCry)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)