unixtime online long convert conversion c# unix-timestamp

online - Análisis de tiempo de Unix en C#



unix timestamp to time online (8)

¡Hurra por los documentos de MSDN DateTime ! También vea TimeSpan .

// First make a System.DateTime equivalent to the UNIX Epoch. System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); // Add the number of seconds in UNIX timestamp to be converted. dateTime = dateTime.AddSeconds(numSeconds); // Then add the number of milliseconds dateTime = dateTime.Add(TimeSpan.FromMilliseconds(numMilliseconds));

¿Hay una manera de analizar rápida / fácilmente la hora de Unix en C #? Soy nuevo en el idioma, así que si esta es una pregunta dolorosamente obvia, me disculpo. IE Tengo una cadena en el formato [segundos desde la época]. [Milisegundos]. ¿Hay un equivalente a SimpleDateFormat de Java en C #?


Aquí está como un método de extensión útil

public static DateTime UnixTime(this string timestamp) { var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0); return dateTime.AddSeconds(int.Parse(timestamp)); }


Esto es algo muy común en C #, pero no hay una biblioteca para eso.

Creé esta mini biblioteca https://gist.github.com/1095252 para hacer mi vida (espero que la tuya también) más fácil.


Esto es de un blog publicado por Stefan Henke :

private string conv_Timestamp2Date (int Timestamp) { // calculate from Unix epoch System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); // add seconds to timestamp dateTime = dateTime.AddSeconds(Timestamp); string Date = dateTime.ToShortDateString() +", "+ dateTime.ToShortTimeString(); return Date; }


La forma más sencilla es probablemente usar algo como:

private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); ... public static DateTime UnixTimeToDateTime(string text) { double seconds = double.Parse(text, CultureInfo.InvariantCulture); return Epoch.AddSeconds(seconds); }

Tres cosas a tener en cuenta:

  • Si sus cadenas son definitivamente de la forma "xy" en lugar de "x, y", debe usar la cultura invariante como se muestra arriba, para asegurarse de que "." se analiza como un punto decimal
  • Debe especificar UTC en el constructor DateTime para asegurarse de que no piense que es una hora local.
  • Si está utilizando .NET 3.5 o superior, puede considerar usar DateTimeOffset lugar de DateTime .

Me doy cuenta de que esta es una pregunta bastante antigua, pero pensé que publicaría mi solución que usaba la clase Instant de Nodatime, que tiene un método específicamente para esto .

Instant.FromSecondsSinceUnixEpoch(longSecondsSinceEpoch).ToDateTimeUtc();

Entiendo totalmente que quizás el hecho de atraer a Nodatime sea pesado para algunas personas. Para mis proyectos donde el aumento de la dependencia no es una preocupación importante, prefiero confiar en las soluciones de biblioteca mantenidas en lugar de tener que mantener la mía.


// This is an example of a UNIX timestamp for the date/time 11-04-2005 09:25. double timestamp = 1113211532; // First make a System.DateTime equivalent to the UNIX Epoch. System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); // Add the number of seconds in UNIX timestamp to be converted. dateTime = dateTime.AddSeconds(timestamp); // The dateTime now contains the right date/time so to format the string, // use the standard formatting methods of the DateTime object. string printDate = dateTime.ToShortDateString() +" "+ dateTime.ToShortTimeString(); // Print the date and time System.Console.WriteLine(printDate);

Surce: http://www.codeproject.com/KB/cs/timestamp.aspx


var date = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)) .AddSeconds( double.Parse(yourString, CultureInfo.InvariantCulture));