FileTime de cadena

tony:

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 131733712713359180se 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 UInt64y Int64, ambos dan el mismo resultado (mal).

Cualquier sugerencia sería muy apreciada.

Gracias

Matthew Watson:

Esto está incorporado a DateTimelo que no hay necesidad de hacer ajustes:

var date = DateTime.FromFileTimeUtc(131733712713359180);

esto devuelve 2018-06-13 13:47:51

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=206540&siteId=1
Recomendado
Clasificación