yyyy parse now new ejemplos convert c# datetime

c# - parse - ¿Cómo puedo convertir un DateTime a la cantidad de segundos desde 1970?



new datetime c# (6)

Ese enfoque será bueno si la fecha y hora en cuestión está en UTC, o representa la hora local en un área que nunca ha observado el horario de verano. Las rutinas de diferencia de DateTime no tienen en cuenta el horario de verano y, en consecuencia, considerarán la medianoche del 1 de junio como un múltiplo de 24 horas después de la medianoche del 1 de enero. No conozco nada en Windows que informe las reglas históricas de ahorro de luz diurna configuración regional, por lo que no creo que haya una buena manera de manejar correctamente en cualquier momento antes del cambio más reciente de la regla de ahorro de luz diurna.

Estoy tratando de convertir una variable C # DateTime a tiempo Unix, es decir, el número de segundos desde el 1 de enero de 1970. Parece que DateTime se implementa realmente como el número de ''tics'' desde el 1 de enero de 0001.

Mi pensamiento actual es restar el 1 de enero de 1970 de mi DateTime de la siguiente manera:

TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0)); return span.TotalSeconds;

¿Hay una mejor manera?


Eso es básicamente eso. Estos son los métodos que uso para convertir ay desde el tiempo de época de Unix:

public static DateTime ConvertFromUnixTimestamp(double timestamp) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); return origin.AddSeconds(timestamp); } public static double ConvertToUnixTimestamp(DateTime date) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); TimeSpan diff = date.ToUniversalTime() - origin; return Math.Floor(diff.TotalSeconds); }


Lo único que veo es que se supone que es desde la medianoche del 1 de enero de 1970 UTC

TimeSpan span= DateTime.Now.Subtract(new DateTime(1970,1,1,0,0,0, DateTimeKind.Utc)); return span.TotalSeconds;


Probablemente desee utilizar DateTime.UtcNow para evitar el problema de la zona horaria

TimeSpan span= DateTime.UtcNow.Subtract(new DateTime(1970,1,1,0,0,0));


Puede crear un startTime y endTime de DateTime, luego endTime.Subtract (startTime). Luego da salida a tu span.Segundos.

Creo que debería funcionar


Si el resto de su sistema está bien con DateTimeOffset en lugar de DateTime, hay una función muy conveniente:

long unixSeconds = DateTimeOffset.Now.ToUnixTimeSeconds();