如何使用DateTime.现在开始打勾

本文关键字:现在开始 DateTime 何使用 | 更新日期: 2023-09-27 18:29:52

我正在尝试将手机的当前时间添加到我的日期时间列表中。我需要它能够用记号做减法。我尝试过使用phonecurrentime.ToString("dd hh:mm");,但因为它是一个字符串,所以没有记号和各种错误!

我需要它来处理DateTime.now

这是我的代码:

InitializeComponent();
List<DateTime> theDates = new List<DateTime>();
DateTime fileDate, closestDate;
theDates.Add(new DateTime(2000, 1, 1, 10, 29, 0));
theDates.Add(new DateTime(2000, 1, 1, 3, 29, 0));
theDates.Add(new DateTime(2000, 1, 1, 3, 29, 0));
// This is the date that should be found
theDates.Add(new DateTime(2000, 1, 1, 4, 22, 0));
// This is the date you want to find the closest one to
fileDate = DateTime.Now;
long min = long.MaxValue;
foreach (DateTime date in theDates)
{
    if (Math.Abs(date.Ticks - fileDate.Ticks) < min)
    {
        min = Math.Abs(date.Ticks - fileDate.Ticks);
        closestDate = date;
    }
}

如何使用DateTime.现在开始打勾

上面的Darren Davies是正确的。

您可以添加/减去日期时间对象。结果的类型为TimeSpan,使您可以轻松比较日期和/或时间差异。

此外,您应该为添加到列表中的每个日期指定一个名称(分配给一个变量,然后添加到列表)。一个月后,你将不记得每一天意味着什么;)

如果您有一个字符串并想将其转换为DateTime,则可以使用

CultureInfo cf = new CultureInfo("en-us");
if(DateTime.TryParseExact("12 12:45", "dd hh:mm", cf, DateTimeStyles.None, out fileDate))
{
  // your code
}

你的代码看起来像:

    List<DateTime> theDates = new List<DateTime>();
    DateTime fileDate, closestDate;
    theDates.Add(new DateTime(2000, 1, 1, 10, 29, 0));
    theDates.Add(new DateTime(2000, 1, 1, 3, 29, 0));
    theDates.Add(new DateTime(2000, 1, 1, 3, 29, 0));
    // This is the date that should be found
    theDates.Add(new DateTime(2000, 1, 1, 4, 22, 0));
    CultureInfo cf = new CultureInfo("en-us");
    string timeToParse = phonecurrentime.ToString("dd hh:mm");
    if(DateTime.TryParseExact(timeToParse, "dd hh:mm", cf, DateTimeStyles.None, out fileDate))
    {
        long min = long.MaxValue;
        foreach (DateTime date in theDates)
        {
            if (Math.Abs(date.Ticks - fileDate.Ticks) < min)
            {
                min = Math.Abs(date.Ticks - fileDate.Ticks);
                closestDate = date;
            }
        }
     }

如果要比较dateTime的时间部分,可以使用TimeOfDay属性:

        TimeSpan ts = DateTime.Now.TimeOfDay;
        foreach (DateTime date in theDates)
        {
            long diff = Math.Abs(ts.Ticks - date.TimeOfDay.Ticks);
            if (diff < min)
            {
                min = diff;
                closestDate = date;
            }
        }
fileDate = phonecurrentime.ToString("dd hh:mm");

不会编译。fileDateDateTime对象。您需要将它分配给另一个DateTime对象,而不是string

如果phonecurrenttimeDateTime,则可以提交.ToString()方法。

fileDate = phonecurrenttime;

编辑

根据您的评论,如果您只是想将当前日期/时间分配给fileDate,则可以使用DateTime.Now:

fileDate = DateTime.Now;