Подтвердить что ты не робот

Как преобразовать тики в формат даты?

Я преобразую значение тиков в дату следующего вида:

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

Используя это, я получаю:

9/27/2009 10:50:27 PM

Но я хочу только дату в этом формате:

October 1, 2009

Значение моих тиков

633896886277130000

Каков наилучший способ сделать это?

4b9b3361

Ответ 1

Объект DateTime может быть создан с определенным значением тиков. После того, как вы определили значение тика, вы можете сделать следующее:

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

Ответ 2

Намного проще сделать это:

DateTime dt = new DateTime(633896886277130000);

Который дает

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

Вы можете отформатировать это любым способом, используя dt.ToString(MyFormat). Обратитесь к этой ссылке для форматирования строк. "MMMM dd, yyyy" работает для того, что вы указали в вопросе.

Не уверен, где вы получите 1 октября.

Ответ 3

    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-запросами.

Ответ 4

Ответы до сих пор помогли мне придумать мои. Я опасаюсь 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.