我有一系列事件物件,過去發生的事情。它們可能相對龐大,出于測驗原因,我需要它們在未來。
- 物件 1) StartTime = 7/2/2022 @ 8:00amEST
- 物件 2) StartTime = 7/2/2022 @ 9:00amEST
- 物件 3) StartTime = 7/4/2022 @ 3:00pmEST
- 物件 4) StartTime = 7/4/2022 @ 3:30pmEST
- 物件 5) StartTime = 7/5/2022 @ 10:00amEST
- ... ETC。
我需要將這些時間改組為基于未來的日期,甚至DateTime.Now.AddDays(1);
我已經嘗試了多次,但總是搞砸,比如弄錯月份,或者最后的日期時間是 32 號。
此方法的輸出將采用日期并按如下方式修改:
- 物件 1) 開始時間 = 11/22/2022 @ 8:00amEST
- 物件 2) StartTime = 11/22/2022 @ 9:00amEST
- 物件 3) 開始時間 = 11/24/2022 @ 3:00pmEST
- 物件 4) 開始時間 = 11/24/2022 @ 3:30pmEST
- 物件 5) StartTime = 11/25/2022 @ 10:00amEST
DateTime CreateDateFromTime(int year, int month, int day, DateTime time)
{
return new DateTime(year, month, day, time.Hour, time.Minute, 0);
}
for (int i = 0; i < evt.Sessions.Count; i )
{
Session session = evt.Sessions[i];
if (session.StartDate.HasValue)
{
DateTime currentSessionStartDate = session.StartDate.Value;
DateTime currentSessionEndDate = session.EndDate.Value;
if (earliestSessionDay == 0) { earliestSessionDay = currentSessionStartDate.Day; }
int innerOffset = currentSessionStartDate.Day - earliestSessionDay;
int offset = DateTime.Now.Day - earliestSessionDay;
session.StartDate = CreateDateFromTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day offset innerOffset 5, currentSessionStartDate);
session.EndDate = CreateDateFromTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day offset innerOffset 5, currentSessionEndDate);
}
}
我會模擬日期,但同樣,出于測驗原因,測驗用戶希望使用他們熟悉的資料,所以我們最終會重復使用這些物件,因此需要這種奇怪的日期轉換。
uj5u.com熱心網友回復:
這就是我認為你需要的:
DateTime[] dates = new []
{
new DateTime(2022, 7, 2, 8, 0, 0),
new DateTime(2022, 7, 2, 9, 0, 0),
new DateTime(2022, 7, 2, 15, 0, 0),
};
DateTime minimum = dates.Min();
TimeSpan delta = DateTime.Now.AddDays(1.0).Subtract(minimum);
DateTime[] forwarded =
dates.Select(d => d.Add(delta)).ToArray();

如果你想保留時間,那么使用.Date這樣的:
DateTime minimum = dates.Min().Date;
TimeSpan delta = DateTime.Now.Date.AddDays(1.0).Subtract(minimum);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/537888.html
標籤:C#约会时间
