SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: nax en Viernes 7 de Enero de 2011, 17:36

Título: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: nax en Viernes 7 de Enero de 2011, 17:36
Bueno, una vez más me tienen por aca preguntando...

resulta que estoy capturando algunas cosas de la api de rapidshare...

Y me interesa conseguir un campo que indica la fecha de expiración, el caso es que quiero comparar ese campo con la fecha actual para ver si expiró...

Al venir desde una petición GET el campo es un String y no tiene formato de fecha, ya que mktime crea un número desde el 1/1/1970 hasta hoy o hasta la fecha que se le indique...

la cuestión es que me ha sido imposible pasar ese número a un DateTime o pasar el DateTime a un número similar y compararlos....  :no:

alguna idea sobre el caso?

saludos  :hola:
nax
Título: Re: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: gabio2 en Viernes 7 de Enero de 2011, 20:25
"Al venir desde una petición GET el campo es un String y no tiene formato de fecha, ya que mktime crea un número desde el 1/1/1970 hasta hoy o hasta la fecha que se le indique..."

no entendí esa parte, si podrias poner un ejemplo de lo que te regresa.. es decir.. el campo que te devuelve el GET.. como es?.. con un ejemplo me aclararias mi duda, para saber como manejarlo.. :).. saludos..
Título: Re: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: nax en Viernes 7 de Enero de 2011, 20:38
el mktime te da algo como: 123455333 por decir algo....

y eso no me lo permite pasar a DateTime
Título: Re: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: LapizTolita en Sábado 8 de Enero de 2011, 03:07
Tenes que saber el date_default_timezone_set() que tiene la pagina y calcular sabiendo que el tiempo unix se define como la cantidad de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970.
Si tenes flojera de codificar :
Código: C#
  1. static DateTime DesdeUnixTime(double tiempo)
  2. {
  3.     DateTime origen = new DateTime(1970, 1, 1, 0, 0, 0, 0);
  4.     return origen.AddSeconds(tiempo);
  5. }
  6.  
  7.  
  8. static double aUnixTime(DateTime fecha)
  9. {
  10.     DateTime origen = new DateTime(1970, 1, 1, 0, 0, 0, 0);
  11.     TimeSpan diferencia = fecha- origen;
  12.     return Math.Floor(diferencia.TotalSeconds);
  13. }
  14.  
Con esto tenes que definir el horario local como el de la pagina antes de invocar las funciones.
Título: Re: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: nax en Miércoles 12 de Enero de 2011, 01:15
lo probaré en cuanto pueda...

supongo que tiempo sería los segundos que me da la pagina no?

básicamente es crear un datetime de 1/1/1970 y sumarle los segundos que me de la web no?

si es eso.. puede que funcione  :good:
Título: Re: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: nax en Viernes 14 de Enero de 2011, 21:47
hola otra vez.

lo he probado así:
Código: C#
  1.             DateTime origen = new DateTime(1970, 1, 1, 0, 0, 0, 0);
  2.             double seconds = 20;
  3.             origen.AddSeconds(seconds);
  4.             MessageBox.Show(origen.ToString("dd/MM/yyyy HH:mm:ss"));
  5.  

y así:



Código: C#
  1.     DateTime origen = new DateTime(1970, 1, 1, 0, 0, 0, 0);
  2.             origen.AddSeconds(1296585662);
  3.             MessageBox.Show(origen.ToString("dd/MM/yyyy HH:mm:ss"));
  4.  

y no funciona... se queda en 1/1/1970 00;00;00
Título: Re: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: LapizTolita en Sábado 15 de Enero de 2011, 02:35
origen=origen.AddSeconds(1296585662);
Título: Re: Convertir un mktime (PHP) a DateTime (c#) o al revés
Publicado por: nax en Sábado 15 de Enero de 2011, 03:05
no voy a hacer comentarios sobre lo penoso que ha sido esto  :brickwall:

el cerebro me la ha jugado...

thanks