我从此XML文件中提取了日期/时间(endTime);
<row endTime="2015-10-23 21:22:23"
startTime="2015-10-22 07:44:31"
endSP="90510"
startSP="16000"
level="4"
typeID="12366"
queuePosition="0"/>
如何将其变为剩余时间的倒计时器?
如果结束时间是2015-10-23 13:00的例子 - 我希望它(截至目前)还剩17分38秒
**已编辑(已添加完整代码)
private void ListViewTrainingQue()
{
listView1.View = View.Details;
listView1.GridLines = true;
listView1.FullRowSelect = true;
string string2 = "https://api.eveonline.com/char/SkillQueue.xml.aspx?keyID=4602486&&vCODE=BHGVeXQkRLKLkIkZQHdeyUxmUz9EfUwbvGzoc2eO4ZR8kRMYxk8PbD4LMwLF7BvH";
// Add Columns to listview
listView1.Columns.Add("Name", 108);
listView1.Columns.Add("Level", 100);
listView1.Columns.Add("Time till completion", 100);
listView1.Columns.Add("Bar", 100);
// Create Array to return values to.
string[] arr = new string[4];
ListViewItem item;
XmlDocument XMLtrans = new XmlDocument();
XMLtrans.Load(string2);
XmlNodeList TRnodelist = XMLtrans.SelectNodes("/eveapi/result/rowset/row");
foreach (XmlNode xmlnode in TRnodelist)
{
string array = xmlnode.Attributes["endTime"].InnerText;
var date = DateTime.Parse(array);
var Timespan = date - DateTime.Now;
if (xmlnode.Attributes["typeID"] != null)
arr[0] = xmlnode.Attributes["typeID"].InnerText;
if (xmlnode.Attributes["level"] != null)
arr[1] = xmlnode.Attributes["level"].InnerText;
if (xmlnode.Attributes["endTime"] != null)
arr[2] = Timespan.ToString();
item = new ListViewItem(arr);
listView1.Items.Add(item);
}
}
这就是我在运行它时所得到的。
答案 0 :(得分:0)
如果我没有弄错,你的问题只是格式化时间,因为你已经可以得到差异。因此,要将其格式化为分钟和秒(即示例中为17分38秒),您可以使用TimeSpan的小时,分钟和秒属性。例如,以下代码块
string array = "2015-10-23 13:00";
var date = DateTime.Parse(array);
var Timespan = date - DateTime.Now;
Console.WriteLine(Timespan.ToString(@"hh\:mm\:ss"));
Console.WriteLine(string.Format("{0} hours {1} minutes {2} seconds", Timespan.Hours, Timespan.Minutes, Timespan.Seconds));
Console.WriteLine(string.Format("{0} minutes {1} seconds", (int)Timespan.TotalMinutes, Timespan.Seconds));
会出乎意料:
20:20:24
20 hours 20 minutes 24 seconds
1220 minutes 24 seconds
您可以选择自己喜欢的格式并使用属性进行更改。
<强>更新强>
所以在你的情况下,如果你想显示小时/分钟/秒,你可以使用它:
if (xmlnode.Attributes["endTime"] != null)
arr[2] = string.Format("{0} hours {1} minutes {2} seconds", Timespan.Hours, Timespan.Minutes, Timespan.Seconds);