using System;
using System.Globalization;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
var date = new DateTime(2013, 07, 22);
var posibleDays = new[]{DayOfWeek.Tuesday,DayOfWeek.Wednesday,DayOfWeek.Friday};
var nearestDay = posibleDays.Select(dow => new {
DayOfWeek = dow,
Diff = (7 + (dow - date.DayOfWeek)) % 7
})
.Where(x => x.Diff >= 1)
.OrderBy(x => x.Diff)
.FirstOrDefault();
Console.WriteLine("date:{0} nearest:{1} diff:{2}", date.ToString(), nearestDay.DayOfWeek,nearestDay.Diff);
date = new DateTime(2013, 07, 23);
posibleDays = new[]{DayOfWeek.Tuesday,DayOfWeek.Wednesday,DayOfWeek.Thursday,DayOfWeek.Saturday};
nearestDay = posibleDays.Select(dow => new {
DayOfWeek = dow,
Diff = (7 + (dow - date.DayOfWeek)) % 7
})
.Where(x => x.Diff >= 1)
.OrderBy(x => x.Diff)
.FirstOrDefault();
Console.WriteLine("date:{0} nearest:{1} diff:{2}", date.ToString(), nearestDay.DayOfWeek,nearestDay.Diff);
date = new DateTime(2013, 07, 24);
posibleDays = new[]{DayOfWeek.Monday, DayOfWeek.Tuesday};
nearestDay = posibleDays.Select(dow => new {
DayOfWeek = dow,
Diff = (7 + (dow - date.DayOfWeek)) % 7
})
.Where(x => x.Diff >= 1)
.OrderBy(x => x.Diff)
.FirstOrDefault();
Console.WriteLine("date:{0} nearest:{1} diff:{2}", date.ToString(), nearestDay.DayOfWeek,nearestDay.Diff);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgCgoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewogICAgICAgIHZhciBkYXRlID0gbmV3IERhdGVUaW1lKDIwMTMsIDA3LCAyMik7CiAgICAgICAgdmFyIHBvc2libGVEYXlzID0gbmV3W117RGF5T2ZXZWVrLlR1ZXNkYXksRGF5T2ZXZWVrLldlZG5lc2RheSxEYXlPZldlZWsuRnJpZGF5fTsKICAgICAgICB2YXIgbmVhcmVzdERheSA9IHBvc2libGVEYXlzLlNlbGVjdChkb3cgPT4gbmV3IHsgCiAgICAgICAgICAgIERheU9mV2VlayA9IGRvdywgCiAgICAgICAgICAgIERpZmYgPSAoNyArIChkb3cgLSBkYXRlLkRheU9mV2VlaykpICUgNyAKICAgICAgICB9KQogICAgICAgIC5XaGVyZSh4ID0+IHguRGlmZiA+PSAxKQogICAgICAgIC5PcmRlckJ5KHggPT4geC5EaWZmKQogICAgICAgIC5GaXJzdE9yRGVmYXVsdCgpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJkYXRlOnswfSBuZWFyZXN0OnsxfSBkaWZmOnsyfSIsIGRhdGUuVG9TdHJpbmcoKSwgbmVhcmVzdERheS5EYXlPZldlZWssbmVhcmVzdERheS5EaWZmKTsKICAgICAgICAKICAgICAgICBkYXRlID0gbmV3IERhdGVUaW1lKDIwMTMsIDA3LCAyMyk7CiAgICAgICAgcG9zaWJsZURheXMgPSBuZXdbXXtEYXlPZldlZWsuVHVlc2RheSxEYXlPZldlZWsuV2VkbmVzZGF5LERheU9mV2Vlay5UaHVyc2RheSxEYXlPZldlZWsuU2F0dXJkYXl9OwogICAgICAgIG5lYXJlc3REYXkgPSBwb3NpYmxlRGF5cy5TZWxlY3QoZG93ID0+IG5ldyB7IAogICAgICAgICAgICBEYXlPZldlZWsgPSBkb3csIAogICAgICAgICAgICBEaWZmID0gKDcgKyAoZG93IC0gZGF0ZS5EYXlPZldlZWspKSAlIDcgCiAgICAgICAgfSkKICAgICAgICAuV2hlcmUoeCA9PiB4LkRpZmYgPj0gMSkKICAgICAgICAuT3JkZXJCeSh4ID0+IHguRGlmZikKICAgICAgICAuRmlyc3RPckRlZmF1bHQoKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiZGF0ZTp7MH0gbmVhcmVzdDp7MX0gZGlmZjp7Mn0iLCAgZGF0ZS5Ub1N0cmluZygpLCBuZWFyZXN0RGF5LkRheU9mV2VlayxuZWFyZXN0RGF5LkRpZmYpOwogICAgICAgIAogICAgICAgIGRhdGUgPSBuZXcgRGF0ZVRpbWUoMjAxMywgMDcsIDI0KTsKICAgICAgICBwb3NpYmxlRGF5cyA9IG5ld1tde0RheU9mV2Vlay5Nb25kYXksIERheU9mV2Vlay5UdWVzZGF5fTsKICAgICAgICBuZWFyZXN0RGF5ID0gcG9zaWJsZURheXMuU2VsZWN0KGRvdyA9PiBuZXcgeyAKICAgICAgICAgICAgRGF5T2ZXZWVrID0gZG93LCAKICAgICAgICAgICAgRGlmZiA9ICg3ICsgKGRvdyAtIGRhdGUuRGF5T2ZXZWVrKSkgJSA3IAogICAgICAgIH0pCiAgICAgICAgLldoZXJlKHggPT4geC5EaWZmID49IDEpCiAgICAgICAgLk9yZGVyQnkoeCA9PiB4LkRpZmYpCiAgICAgICAgLkZpcnN0T3JEZWZhdWx0KCk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoImRhdGU6ezB9IG5lYXJlc3Q6ezF9IGRpZmY6ezJ9IiwgIGRhdGUuVG9TdHJpbmcoKSwgbmVhcmVzdERheS5EYXlPZldlZWssbmVhcmVzdERheS5EaWZmKTsKCX0KfQ==