web-dev-qa-db-fra.com

Comment puis-je convertir des ticks en un format de date?

Je convertis une valeur de ticks en une date comme celle-ci:

Convert(datetime, (MachineGroups.TimeAdded - 599266080000000000)/864000000000);

En utilisant cela, j'obtiens:

9/27/2009 10:50:27 PM

Mais je veux juste la date dans ce format:

October 1, 2009

La valeur de mon échantillon de ticks est

633896886277130000

Quelle est la meilleure façon de procéder?

60
user175084

Un objet DateTime peut être construit avec une valeur spécifique de ticks. Une fois que vous avez déterminé la valeur des ticks, vous pouvez effectuer les opérations suivantes:

DateTime myDate = new DateTime(numberOfTicks);
String test = myDate.ToString("MMMM dd, yyyy");
173
Jason Berkan

C'est beaucoup plus simple de le faire:

DateTime dt = new DateTime(633896886277130000);

Qui donne

dt.ToString() ==> "9/27/2009 10:50:27 PM"

Vous pouvez formater cela comme vous le souhaitez en utilisant dt.ToString(MyFormat). Reportez-vous à cette référence pour les chaînes de format. "MMMM dd, yyyy" Fonctionne pour ce que vous avez spécifié dans la question.

Je ne sais pas où vous obtenez le 1er octobre.

48
Eric J.
    private void button1_Click(object sender, EventArgs e)
    {
        long myTicks = 633896886277130000;
        DateTime dtime = new DateTime(myTicks);
        MessageBox.Show(dtime.ToString("MMMM d, yyyy"));
    }

Donne

September 27, 2009

Est-ce ce dont vous avez besoin?

Je ne vois pas comment ce format est nécessairement facile à utiliser dans les requêtes SQL.

5
JosephStyons

Jusqu'à présent, les réponses m'ont aidé à trouver la mienne. Je me méfie de l'heure UTC par rapport à l'heure locale; les tiques doivent toujours être UTC IMO.

public class Time
{
    public static void Timestamps()
    {
        OutputTimestamp();
        Thread.Sleep(1000);
        OutputTimestamp();
    }

    private static void OutputTimestamp()
    {
        var timestamp = DateTime.UtcNow.Ticks;
        var localTicks = DateTime.Now.Ticks;
        var localTime = new DateTime(timestamp, DateTimeKind.Utc).ToLocalTime();
        Console.Out.WriteLine("Timestamp = {0}.  Local ticks = {1}.  Local time = {2}.", timestamp, localTicks, localTime);
    }
}

Sortie:

Timestamp = 636988286338754530.  Local ticks = 636988034338754530.  Local time = 2019-07-15 4:03:53 PM.
Timestamp = 636988286348878736.  Local ticks = 636988034348878736.  Local time = 2019-07-15 4:03:54 PM.
0
Peter L