C# 如何将刻度转换为日期格式?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1489243/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-06 18:02:24  来源:igfitidea点击:

How can I convert ticks to a date format?

c#asp.netsql-serversql-server-2005

提问by user175084

I am converting a ticks value to a date like this:

我正在将刻度值转换为这样的日期:

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

Using this i get:

使用这个我得到:

9/27/2009 10:50:27 PM

But I want just the date in this format:

但我只想要这种格式的日期:

October 1, 2009

My sample ticks value is

我的示例刻度值是

633896886277130000

What is the best way to do this?

做这个的最好方式是什么?

回答by Eric J.

It's much simpler to do this:

这样做要简单得多:

DateTime dt = new DateTime(633896886277130000);

Which gives

这使

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

You can format this any way you want by using dt.ToString(MyFormat). Refer to this referencefor format strings. "MMMM dd, yyyy"works for what you specified in the question.

您可以使用dt.ToString(MyFormat). 请参阅此参考以了解格式字符串。"MMMM dd, yyyy"适用于您在问题中指定的内容。

Not sure where you get October 1.

不确定 10 月 1 日在哪里。

回答by Jason Berkan

A DateTime object can be constructed with a specific value of ticks. Once you have determined the ticks value, you can do the following:

可以使用特定的刻度值构造 DateTime 对象。确定刻度值后,您可以执行以下操作:

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

回答by JosephStyons

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

Gives

September 27, 2009

Is that what you need?

那是你需要的吗?

I don't see how that format is necessarily easy to work with in SQL queries, though.

不过,我不明白在 SQL 查询中使用这种格式是多么容易。

回答by Peter L

Answers so far helped me come up with mine. I'm wary of UTC vs local time; ticks should always be UTC IMO.

到目前为止的答案帮助我想出了我的答案。我对 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);
    }
}

Output:

输出:

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.