No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

脷ltima oportunidad para asegurar tu aprendizaje por 1 a帽o a precio especial

Antes: $249

Currency
$189/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

0D
7H
34M
46S

Time.h

10/12
Recursos

Aportes 28

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Si calculan el EPOCH time actual y le restan el de la clase, podr铆an saber que d铆a se grabo el curso. 馃く

Jaja. Dale al 馃挌 si tambi茅n pensaste que te daba un n煤mero distinto y estuviste 5 minutos revisando el c贸digo hasta que te diste cuenta que evidentemente tu resultado iba a tener m谩s horas porque lo hiciste en el futuro. 驴Qui茅n dijo Dark? 馃暟

#include <stdio.h>
#include <time.h>

int main()
{
    time_t now;

    time(&now); //por referencias

    printf("The date and time is: %s\n", ctime(&now));
    return 0;
}

Este e mi c贸digo, para que tarde algo m谩s le hago escribir por consola y borrarla, ojo el borrado no es igual en Linux que en Windows, por lo que tendr谩n que comentar y descomentar seg煤n sea su m谩quina si quieren probar mi c贸digo.

#include <time.h>
#include <stdlib.h>

int		main(void)
{
	long i;
	long begin;
	long end;
	int hours;
	int minutes;
	int seconds;
	long aux;
	
	i = 0;
	begin = time(NULL);
	while (i < 600)
	{
		system("clear"); // Linux
		//system("cls"); // Windows
		printf("contandor %06d\n", i);
		i++;
	}
	end = time(NULL);
	aux = difftime(end, begin);
	hours = aux / 3600;
	minutes = aux / 60;
	seconds = aux % 60;
	printf("el tiempo transcurrido total es %d seg y equivale a %02d:%02d:%02d", aux, hours, minutes, seconds);
	return 0;
}

Salida

contandor 000599
el tiempo transcurrido total es 19 seg y equivale a 00:00:19

Hice este contador de segundos.
WARNING!!!
Come mucha CPU

comparto el codigo, utilizando algunas funciones que contine la libreria time.h

#include <stdio.h>
#include <time.h>

int main ()
{
    time_t t;
    
    t = time(NULL);
    
    printf(asctime(localtime(&t)));
}

Me pase con los ceros y se me tildo el programa jaja.

Seg煤n la ayuda de Linux o del WSL de Windows mas las librer铆as de C
man 2 time

TIME(2)                                                                              Linux Programmer's Manual                                                                              TIME(2)

NAME
       time - get time in seconds

SYNOPSIS
       #include <time.h>

       time_t time(time_t *tloc);

DESCRIPTION
       time() returns the time as the number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).

       If tloc is non-NULL, the return value is also stored in the memory pointed to by tloc.

RETURN VALUE
       On success, the value of time in seconds since the Epoch is returned.  On error, ((time_t) -1) is returned, and errno is set appropriately.

ERRORS
       EFAULT tloc points outside your accessible address space (but see BUGS).

              On  systems  where the C library time() wrapper function invokes an implementation provided by the vdso(7) (so that there is no trap into the kernel), an invalid address may instead
              trigger a SIGSEGV signal.

CONFORMING TO
       SVr4, 4.3BSD, C89, C99, POSIX.1-2001.  POSIX does not specify any error conditions.

NOTES
       POSIX.1 defines seconds since the Epoch using a formula that approximates the number of seconds between a specified time and the Epoch.  This formula takes account of the  facts  that  all
       years that are evenly divisible by 4 are leap years, but years that are evenly divisible by 100 are not leap years unless they are also evenly divisible by 400, in which case they are leap
       years.  This value is not the same as the actual number of seconds between the time and the Epoch, because of leap seconds and because system clocks are not required to be synchronized  to
       a standard reference.  The intention is that the interpretation of seconds since the Epoch values be consistent; see POSIX.1-2008 Rationale A.4.15 for further rationale.

       On  Linux,  a  call to time() with tloc specified as NULL cannot fail with the error EOVERFLOW, even on ABIs where time_t is a signed 32-bit integer and the clock ticks past the time 2**31
       (2038-01-19 03:14:08 UTC, ignoring leap seconds).  (POSIX.1 permits, but does not require, the EOVERFLOW error in the case where the seconds since  the  Epoch  will  not  fit  in  time_t.)
       Instead, the behavior on Linux is undefined when the system time is out of the time_t range.  Applications intended to run after 2038 should use ABIs with time_t wider than 32 bits.

BUGS
       Error  returns  from this system call are indistinguishable from successful reports that the time is a few seconds before the Epoch, so the C library wrapper function never sets errno as a
       result of this call.

       The tloc argument is obsolescent and should always be NULL in new code.  When tloc is NULL, the call cannot fail.

   C library/kernel differences
       On some architectures, an implementation of time() is provided in the vdso(7).

SEE ALSO
       date(1), gettimeofday(2), ctime(3), ftime(3), time(7), vdso(7)

COLOPHON
       This page is part of release 4.15 of the Linux man-pages project.  A description of the project, information about reporting bugs, and the latest version of this  page,  can  be  found  at
       https://www.kernel.org/doc/man-pages/.

Linux                                                                                        2017-09-15                                                                                     TIME(2)

Como matar tu CPU en 10 l铆neas鈥 jejeje

Con este codigo pueden ver cuantos dias, horas, minutos y segundos han pasado desde EPOCH como en la pagina de la clase. 隆Feliz d铆a!

#include <time.h>
#include <stdlib.h>


time_t hoy;
int days,hrs,min,sec;

int		main(void)
{

hoy = time(NULL);
printf("EPOCH es igual a %ld segundos \n", hoy);

days = hoy/86400;
hrs = (hoy % 86400) / 3600;
min = ((hoy % 86400) % 3600) / 60;
sec = ((hoy % 86400) % 3600) % 60;

printf("Desde EPOCH han pasado %d dias, %d horas, %d minutos, %d segundos\n", days, hrs,min,sec);

}

驴por qu茅 null en la funci贸n null?

Muy buen aporte

Aqu铆 dejo mi soluci贸n al reto.

#include <stdio.h>
#include <time.h>

int main() {
  time_t now = time(NULL);
  struct tm localTime = *localtime(&now);

  char formattedDate[20];

  char format[] = "%Y-%m-%d %H:%M:%S";
  
  int writedBytes = strftime(formattedDate, sizeof formattedD
ate, format, &localTime);

  if (writedBytes != 0) {
    printf("La fecha actual es: %s\n", formattedDate);
  }


  return 0;
}

Reto completado!
Sin embargo, hoy es domingo y me aparece 0 como dia de la semana. No se como cambiar esto. Intente con IF y con WHILE pero no lo logre.

/*El programa tiene que devolver la fecha,
la hora, y el dia actual*/
#include <stdio.h>
#include <time.h>

#define COT (-5)

int main()
{
    time_t tiempo;
    struct tm *info;

    time(&tiempo);
    info = gmtime(&tiempo);
    
    printf("Retorne EPOCH con operador AND: %d, y con macro NULL: %d \n", time(&tiempo), time(NULL));
    printf("Fecha actual del EPOCH UTC/GMT: %2d/%2d/%4d, hora: %2d:%02d:%02d, dia de la semana:%d \n", info->tm_mday, info->tm_mon, (info->tm_year)+1900, (info->tm_hour)%24, info->tm_min, info->tm_sec, info->tm_wday);
    printf("Fecha actual de Colombia UTC-5/GMT-5: %2d/%2d/%4d, hora: %2d:%02d:%02d, dia de la semana:%d \n", info->tm_mday, info->tm_mon, (info->tm_year)+1900, (info->tm_hour+COT)%24, info->tm_min, info->tm_sec, info->tm_wday);

    return 0;
}

Captura:

Al ejecutar el programa, ocupa el 100% de la CPU, cabe mencionar que estoy trabajando en una raspberry pi 4 con 8 GB de RAM.

Aqu铆 est谩 el reto completado. Si alguien puede decirme c贸mo poner 2 saltos de l铆nea con \r sin que se repita el enter (\n) se lo agradecer铆a.

#include <stdio.h>
#include <string.h>
#include <time.h>

int main() {
    char monthyear[12];
    char weekday[11];
    char meridian[3];
    time_t start_time = time(NULL);
    for (;;) {
        time_t current_time = time(NULL);
        struct tm* year=(localtime(&current_time)->tm_year+1900);
        struct tm* monthnumber=localtime(&current_time)->tm_mon+1;
        struct tm* yearday=localtime(&current_time)->tm_yday + 1;
        struct tm* weeknumber=localtime(&current_time)->tm_wday+1;
        struct tm* monthday=localtime(&current_time)->tm_mday;
        struct tm* hours=localtime(&current_time)->tm_hour;
        struct tm* minutes=localtime(&current_time)->tm_min;
        struct tm* seconds=localtime(&current_time)->tm_sec;
        current_time -= start_time;
        if (monthnumber == 1)
            strcpy(monthyear, "Enero");
        else if (monthnumber == 2)
            strcpy(monthyear, "Febrero");
        else if (monthnumber == 3)
            strcpy(monthyear, "Marzo");
        else if (monthnumber == 4)
            strcpy(monthyear, "Abril");
        else if (monthnumber == 5)
            strcpy(monthyear, "Mayo");
        else if (monthnumber == 6)
            strcpy(monthyear, "Junio");
        else if (monthnumber == 7)
            strcpy(monthyear, "Julio");
        else if(monthnumber == 8)
            strcpy(monthyear, "Agosto");
        else if (monthnumber == 9)
            strcpy(monthyear, "Septiembre");
        else if (monthnumber == 10)
            strcpy(monthyear, "Octubre");
        else if (monthnumber == 11)
            strcpy(monthyear, "Noviembre");
        else if (monthnumber == 12)
            strcpy(monthyear, "Diciembre");
        else
            strcpy(monthyear, "MONTH ERROR");
        if (weeknumber == 1)
            strcpy(weekday, "Domingo");
        else if (weeknumber == 2)
            strcpy(weekday, "Lunes");
        else if (weeknumber == 3)
            strcpy(weekday, "Martes");
        else if (weeknumber == 4)
            strcpy(weekday, "Mi茅rcoles");
        else if (weeknumber == 5)
            strcpy(weekday, "Jueves");
        else if (weeknumber == 6)
            strcpy(weekday, "Viernes");
        else if (weeknumber == 7)
            strcpy(weekday, "S谩bado");
        else
            strcpy(weekday, "WDAY ERROR");
        if ((int)hours %24 >= 0 && (int)hours %24 < 12)
            strcpy(meridian, "AM");
        else if ((int)hours %24 >= 12 && (int)hours %24 < 24)
            strcpy(meridian, "PM");
        else
            strcpy(meridian, "ER");
        printf("\rLa fecha es: %s, %.2i de %s de %i, Mes %.2i, D铆a %.2i | Hora: %.2i:%.2i:%.2i %s | (Execution time: %li)", weekday, monthday, monthyear, year, monthnumber, yearday, hours, minutes, seconds, meridian, current_time);
        fflush(stdout);
        sleep(1);
    }
    return 0;
}

Buenas! Comparto mi resoluci贸n al reto, saludos!


#include <stdio.h>
#include <time.h>

/*Queremos saber la fecha y hora actual e imprimirla en la consola*/


time_t t;



int main(){


    struct tm *tm;
    char dateAndHour [100];
    t = time(NULL);
    tm = localtime(&t);
    
    strftime(dateAndHour, 100, "%d/%m/%Y y la hora es: %H:%M:%S", tm);

    printf("Hoy es: %s\n", dateAndHour);
    
    return 0;
    
}

Resultado en la consola:

Buenas pe帽a.

Comparto un art铆culo con ejemplos sobre este tema, bastante completo.

C贸mo convertirte en un se帽or del tiempo en C/C++ desde cero

Un saludo y gracias.

#include <stdio.h>
#include <time.h>

int main()
{
    time_t cl_et = 442169 * 3600;
    
    //Wed Jun 10 17:00:00 2020 - La fecha en que se grabo la clase
    printf("Current time: %s", ctime(&cl_et));

    return 0;
}

Cual es la diferencia entre printnf y cout y su homologo con scanf y cin, esto lo vi en el universidad pero no tengo clara la diferencia.

Quien mas descubri贸 que esta clase se grabo aproximadamente un 11 de Junio del 2020?

Soluci贸n.

#include <stdio.h>
#include <time.h>

time_t seconds;

long main()
{
    seconds = time(NULL);
    printf("La horas local calculada desde EPOCH es: %s", asctime(localtime(&seconds)));
    return 0;
}```

Esta es la forma f谩cil:

#include <stdio.h>
#include <time.h>


int main () {

    time_t now;
    now = time (NULL);

    printf("This prorgam has written at: %s", ctime(&now)); 

}

Yo hubiera ido al administrador de tareas a cortar el proceso, no sabia que solo cerrando la consola de vsc se cancelaba el proceso

buena clase

#include <stdio.h>
#include <time.h>


int main()
{
    time_t tiempo;
    time(&tiempo);
    printf("%s\n", ctime(&tiempo));

    return 0 ; 
}```

Un atajo a Save As es:
Alt + Shit + S
simple pero ahorra mucho tiempo