¿Hay alguna manera de analizar rápida y fácilmente el tiempo 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 Época]. [Milisegundos]. ¿Existe un equivalente al SimpleDateFormat de Java en C#?Análisis del tiempo de Unix en C#
Respuesta
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 "x.y" en lugar de "x, y" se debe utilizar la referencia cultural de todos 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 crea que sea una hora local. - Si está utilizando .NET 3.5 o superior, es posible que desee considerar el uso de
DateTimeOffset
en lugar deDateTime
.
¡Hooray para MSDN DateTime docs! 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));
// 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);
var date = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc))
.AddSeconds(
double.Parse(yourString, CultureInfo.InvariantCulture));
Eso terminará con un DateTimeKind no especificado, creo. También usará la cultura local para determinar el formato del punto decimal. –
Ah, cierto. Arreglará. –
Esto es de a blog posting by 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;
}
Esto es algo muy común que las personas en C# hacen, sin embargo, 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.
+1 para la biblioteca, es agradable. –
Aquí es como un método útil extensión
public static DateTime UnixTime(this string timestamp)
{
var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
return dateTime.AddSeconds(int.Parse(timestamp));
}
Comprendo que esto es una pregunta bastante antiguo pero pensé que había puesto mi solución que utiliza Nodatime's clase instantánea que has a method specifically for this.
Instant.FromSecondsSinceUnixEpoch(longSecondsSinceEpoch).ToDateTimeUtc();
Entiendo totalmente que tal vez tirar en Nodatime puede ser pesado para algunas personas. Para mis proyectos donde la hinchazón de la dependencia no es una gran preocupación, prefiero confiar en las soluciones de biblioteca mantenidas en lugar de tener que mantener las mías.
- 1. Listado de funciones C/C++ (Análisis de código en Unix)
- 2. Tiempo de modificación del archivo (segundos) en Unix
- 3. Tiempo de Unix en SQL
- 4. Lote: Marca de tiempo a UNIX Tiempo
- 5. Marca de tiempo UNIX siempre en GMT?
- 6. Análisis del código Objective-C para análisis estático
- 7. Marca de tiempo Unix en sqlite?
- 8. Serie de tiempo de análisis en Python
- 9. Convertir tiempo Unix con PowerShell
- 10. Análisis de IPv6 en C
- 11. fecha php de marca de tiempo Unix
- 12. Análisis regular sobre series de tiempo irregulares
- 13. Marca de tiempo del archivo en C++
- 14. Tiempo de espera del subproceso en C#
- 15. UNIX Marca de tiempo para MySQL DATETIME
- 16. análisis de texto en C
- 17. Análisis del código VS2011
- 18. Análisis de uso de software en C#
- 19. Crear código postal del directorio en Unix m/c
- 20. Tamaño del proceso en UNIX
- 21. Análisis JSON incremental en C#
- 22. Análisis de audio en tiempo real en Linux
- 23. Análisis de código C#
- 24. Convertir la marca de tiempo de unix a julian
- 25. Cadena de duración del análisis en milisegundos
- 26. marca de tiempo Unix de fecha y hora en Android
- 27. graficando marcas de tiempo de unix en matplotlib
- 28. ¿Cómo obtener el tiempo de actividad de UNIX en Java?
- 29. Tiempo de microsegundo actual en C?
- 30. Desinfección en tiempo real del código C
La versión editada de su publicación está bien. Sin embargo, la primera versión fue realmente inútil, ya que la página MSDN vinculada no tiene una muestra para las marcas de tiempo de UNIX, ni DateTime tiene una función incorporada que podría haber encontrado a través de esa página. Ahora que ha editado la respuesta, es lo mismo que los demás. – OregonGhost