web-dev-qa-db-ja.com

ティックを日付形式に変換するにはどうすればよいですか?

ティック値を次のような日付に変換しています:

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

これを使用して私は得る:

9/27/2009 10:50:27 PM

しかし、私はこの形式の日付のみが必要です:

October 1, 2009

サンプルのティック値は

633896886277130000

これを行う最良の方法は何ですか?

60
user175084

DateTimeオブジェクトは、ティックの特定の値で構築できます。ティック値を決定したら、次を実行できます。

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

これを行う方がはるかに簡単です:

_DateTime dt = new DateTime(633896886277130000);
_

それは与える

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

dt.ToString(MyFormat)を使用して、これを任意の方法でフォーマットできます。フォーマット文字列については このリファレンス を参照してください。 _"MMMM dd, yyyy"_は、質問で指定したものに対して機能します。

10月1日にどこに到着するかわかりません。

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"));
    }

与える

September 27, 2009

それはあなたが必要なものですか?

ただし、その形式がSQLクエリでどのように簡単に機能するかはわかりません。

5
JosephStyons

これまでの回答は、私が自分のアイデアを思いつくのに役立ちました。 UTC対現地時間には警戒しています。ティックは常に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);
    }
}

出力:

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