Estoy leyendo algunos valores almacenados Microsoft FILETIME, como mucho, y yo estoy tratando de convertirlo en una fecha legible por humanos.
Por ejemplo, el valor 131733712713359180
se convierte en: Wednesday, June 13, 2018 1:47:51pm
. Esto se hizo utilizando la herramienta en línea, aquí: convertidor de tiempo en línea
Tengo que trabajar en bien de Java, pero cuando trato de hacerlo en C #, estoy recibiendo el año equivocado. La salida que recibo es: 13/06/0418 13:47:51
.
El código que estoy usando para hacer la conversión es:
public string CalculateTimestamp(Int64 epoch)
{
DateTime date = DateTime.Now;
try
{
date = new DateTime(epoch);
DateTime filetime = new DateTime(date.ToFileTime());
result = filetime.ToString();
}
catch (Exception uhoh)
{
result = "failedtoparsetimestamp";
}
return result;
}
Al hacer la conversión en Java, este es el código que estoy usando.
public String calculateTimeStamp(long epoch) {
if (epoch == 0) {
return "--";
}
long unixDifference = 11644473600000L;
long timeStamp = (epoch / (10 * 1000)) - unixDifference;
Date date = new Date(timeStamp);
return date.toString();
}
Supuse que la conversión de C # debe ser más sencillo, pero no puedo entender por qué el año que está mal. He intentado tanto UInt64
y Int64
, ambos dan el mismo resultado (mal).
Cualquier sugerencia sería muy apreciada.
Gracias
Esto está incorporado a DateTime
lo que no hay necesidad de hacer ajustes:
var date = DateTime.FromFileTimeUtc(131733712713359180);
esto devuelve 2018-06-13 13:47:51