如何使用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;
}
}
您可以添加/减去日期时间对象。结果的类型为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");
不会编译。fileDate
是DateTime
对象。您需要将它分配给另一个DateTime
对象,而不是string
。
如果phonecurrenttime
是DateTime
,则可以提交.ToString()方法。
fileDate = phonecurrenttime;
编辑
根据您的评论,如果您只是想将当前日期/时间分配给fileDate
,则可以使用DateTime.Now
:
fileDate = DateTime.Now;