从 Unix 格式获取 shortTimeDate (C#)

Get shortTimeDate from Unix format (C#)

我有时间输入数据如下:

1536271200
1536184800
1536098400
1536012000
1535925600

我制作了快速的 Unix TimeConverter:

public static DateTime Converter(double ts)
{
        DateTime org= new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);

        org = org.AddSeconds(ts);
        org = org.ToLocalTime();

        return org;
}

但转换后 return 我的日期如下:

2018-09-10 00:00:00
2018-09-07 00:00:00
2018-09-06 00:00:00
2018-09-05 00:00:00
2018-09-04 00:00:00
2018-09-03 00:00:00

如何获取 shortDateFormat (YYYY-MM-DD)?

您对 DateTime 对象和 "text string that looks like a date"

感到困惑

您的 DateTime 对象保存日期所在的时刻。您可以使用 .ToString() 和格式字符串将它变成一个看起来像任何您想要的文本字符串:

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings

或者您可以使用为标准格式字符串提供的快捷方式之一,例如 .ToShortDateString()

https://docs.microsoft.com/en-us/dotnet/api/system.datetime?view=netframework-4.7.2

最终,您需要理解的是您在抱怨 "my date has a time tacked on the end" -> 日期时间总是有时间成分。这个世界上没有日期,你的生日,你的毕业典礼,元旦等没有与之相关的时间。

一切都发生在某个时间,某个日期。

当您告诉您的程序将这些日期打印到控制台时,它包括了时间(所有午夜),因为这是您的系统默认执行的操作。如果你想打印出没有时间的,指定一个不包括时间占位符的格式。在准备显示数据的过程中,我们选择我们想要看到的

您可以使用 .ToString(format) 来获得您想要的任何格式,在本例中为 .ToString("yyyy-MM-dd"):

public static string Converter(double ts)
{
        DateTime org= new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);

        org = org.AddSeconds(ts);
        org = org.ToLocalTime();

        return org.ToString("yyyy-MM-dd");
}

当然函数的 return 类型必须是字符串。