xamarin中的入门者。试图将时间显示为HH:mm,而未添加秒。它在我的表单上显示为示例12:30:00,我希望为12:30。我是否需要更改日期时间功能,代码当前正在运行,但仍将时间显示为小时,分钟,秒。
该代码还应允许最快的时间出现在顶部,但似乎也没有这样做。
void FindNextDue(ObservableCollection<UserMedDosagePayLoad> medtimes)
{
UserMedTimesFilteredList.Clear();
int nowHour = DateTime.Now.Hour;
int nowMinutes = DateTime.Now.Minute;
TimeSpan now = new TimeSpan(nowHour, nowMinutes, 0);
foreach (UserMedDosagePayLoad item in medtimes)
{
item.Nextduemessage = item.Dosage + " " + item.Dosageunit +
"due at " + item.Time;
string[] DT = item.Time.Split(':');
if (DT[0] != null)
{
int hr = Convert.ToInt32(DT[0]);
int minutes = Convert.ToInt32(DT[1]);
TimeSpan medTime = new TimeSpan(hr, minutes, 0);
TimeSpan comparison = now.Subtract(medTime).Negate();
TimeSpan TwentyFourHour = new TimeSpan(24, 0, 0);
if (comparison.TotalMilliseconds <0)
{
comparison = TwentyFourHour.Add(comparison);
}
TimeComparison.Add(comparison);
}
}
//Order the collection of times so the next due is always first
TimeComparison = new List<TimeSpan>(TimeComparison.OrderBy(h => h.Hours)
.ThenBy(m => m.Minutes));
List<string> UserMedIDs = new List<string>();
for (int i = 0; i < TimeComparison.Count(); i++)
{
DateTime NextDue = DateTime.Now.Add(TimeComparison[i]);
DateTime NextDueToCompare = new DateTime(NextDue.Year, NextDue.Month,
NextDue.Day, NextDue.Hour, NextDue.Minute, 0);
string NextDueComparisonString = NextDueToCompare.ToString("HH:mm:ss");
foreach (UserMedDosagePayLoad item in UserMedTimes)
{
if (item.Time == NextDueComparisonString &&
!UserMedIDs.Contains(item.Usermedid))
{
UserMedTimesFilteredList.Add(item);
UserMedIDs.Add(item.Usermedid);
}
}
UserMedTimes = medtimes;
MedicationList.ItemsSource = UserMedTimesFilteredList;
BusyIndicator.IsRunning = false;
}
}
答案 0 :(得分:2)
如果只希望显示小时和分钟,则从格式字符串中删除“ ss”
string NextDueComparisonString = NextDueToCompare.ToString("HH:mm:ss");
在这里,您没有指定任何格式,因此使用的是默认格式
item.Nextduemessage = item.Dosage + " " + item.Dosageunit +
"due at " + item.Time;
指定这样的格式
item.Nextduemessage = item.Dosage + " " + item.Dosageunit +
"due at " + item.Time.ToString("HH:mm");
答案 1 :(得分:1)
如果根本不想看秒,请使用格式设置(例如12:48)。
该方法获取TimeSpan obj,然后以字符串形式返回时间,不带秒。
阅读此处以了解有关格式化的更多信息。
public string GetTimeSpanWithoutSeconds(TimeSpan input)
{
return input.ToString(@"hh\:mm");
}
将小时表示为01到12之间的数字;也就是说,小时是用12小时制来表示的,该时钟对自午夜或中午以来的整个小时进行计数。午夜后的特定小时与中午后的同一小时没有区别。小时不会四舍五入,单位小时的格式为前导零。例如,给定早上或下午5:43的时间,此格式说明符将显示“ 05”。
将分钟表示为00到59之间的数字。分钟表示自上一小时以来经过的整分钟。分钟数字以前导零表示。