В C#,Как определить, находится ли дата между датами текущей недели?
Как мы проверяем определенную дату с датами недели?
Например: 6/02/2014
Текущие Недели: 02/02/2014 - 08/02/2014
так это даты с в неделю выше ....
В C#,Как определить, находится ли дата между датами текущей недели?
Как мы проверяем определенную дату с датами недели?
Например: 6/02/2014
Текущие Недели: 02/02/2014 - 08/02/2014
так это даты с в неделю выше ....
хмм
public bool isBetween(DateTime input, DateTime date1, DateTime date2)
{
if (input > date1 && input < date2)
return true;
else
return false;
}
?
вход = ваша дата date1 & date2 = начало и конец недели
в вышеуказанный только, к примеру.Нам нужно найти первый ват - все текущие дни недели, тогда нужно проверить соответствующую дату? – user1941948
Да, но это очень простая задача. Вы можете получить текущий день недели, и из этого вы можете рассчитывать дату начала и окончания даты – szpic
Как насчет:
bool inRange = (date >= lowerDate && date <= upperDate);
Я думаю, что OP хочет получить заданную дату, в которой недели (и какие даты на этой неделе начинаются и заканчиваются). Конечно, вопрос не совсем понятен. –
@ SonerGönül - возможно. Это не на 100% ясно, что спрашивается :-( – Sean
Используйте это для проверки (последний параметр не является обязательным, если вы хотите всегда 1 неделю от FromDate , вам не нужно использовать последний параметр):
public static bool DateInside(DateTime checkDate,
DateTime fromDate, DateTime? lastDate = null)
{
DateTime toDate = lastDate != null ? lastDate.Value : fromDate.AddDays(6d);
return checkDate >= fromDate && checkDate <= toDate;
}
Для вызова использования:
bool isDateInside = DateInside(new DateTime(2014, 02, 06),
new DateTime(2014, 02, 02)); // return true
И поиск первый :) Ответ также здесь: How to check whether C# DateTime is within a range
Если вы хотите проверки, если даты в той же неделе, то вы можете использовать это:
public static bool DateInsideOneWeek(DateTime checkDate, DateTime referenceDate)
{
// get first day of week from your actual culture info,
DayOfWeek firstWeekDay = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
// or you can set exactly what you want: firstWeekDay = DayOfWeek.Monday;
// calculate first day of week from your reference date
DateTime startDateOfWeek = referenceDate;
while(startDateOfWeek.DayOfWeek != firstWeekDay)
{ startDateOfWeek = startDateOfWeek.AddDays(-1d); }
// fist day of week is find, then find last day of reference week
DateTime endDateOfWeek = startDateOfWeek.AddDays(6d);
// and check if checkDate is inside this period
return checkDate >= startDateOfWeek && checkDate <= endDateOfWeek;
}
Actual неделя в моей информации о культуре начинается с понедельника, 3 февраля 2014 года (так что для меня неделя между 3 февраля и 9 февраля). Если я проверить любую дату с датой отсчета (второй параметр), как сегодня (2014-февраль-06) я получаю этот результат:
For 2014-Feb-02 (Sunday before this week): false
For 2014-Feb-03 (Monday inside this week): true
For 2014-Feb-06 (Today inside this week): true
For 2014-Feb-09 (Sunday inside this week): true
For 2014-Feb-10 (Monday next week): false
Вы можете вызвать этот метод, чтобы проверить, если одна дата внутри той же недели, referentional как это:
DateInsideOneWeek(new DateTime(2014, 02, 02), new DateTime(2014, 02, 06));
вы можете найти текущей недели даты начала и окончания с этим кодом:
DateTime startDateOfWeek = DateTime.Now.Date; // start with actual date
while(startDateOfWeek.DayOfWeek != DayOfWeek.Monday) // set first day of week in your country
{ startDateOfWeek = startDateOfWeek.AddDays(-1d); } // after this while loop you get first day of actual week
DateTime endDateOfWeek = startDateOfWeek.AddDays(6d); // you just find last week day
это ты хотел?
Как мы должны найти текущую дату недели? Тогда проверьте соответствующую дату с датами недели? – user1941948
Я продлил свой ответ за то, что, как я думаю, вы хотите. вы хотели, а если нет, измените свой вопрос и объясните это. – Atiris
Вот еще одно решение :)
public static class DateExtensions
{
private static void Swap<T>(ref T one, ref T two)
{
var temp = one;
one = two;
two = temp;
}
public static bool IsFromSameWeek(this DateTime first, DateTime second, DayOfWeek firstDayOfWeek = DayOfWeek.Monday)
{
// sort dates
if (first > second)
{
Swap(ref first, ref second);
}
var daysDiff = (second - first).TotalDays;
if (daysDiff >= 7)
{
return false;
}
const int TotalDaysInWeek = 7;
var adjustedDayOfWeekFirst = (int)first.DayOfWeek + (first.DayOfWeek < firstDayOfWeek ? TotalDaysInWeek : 0);
var adjustedDayOfWeekSecond = (int)second.DayOfWeek + (second.DayOfWeek < firstDayOfWeek ? TotalDaysInWeek : 0);
return adjustedDayOfWeekSecond >= adjustedDayOfWeekFirst;
}
}
Upd: он, как представляется, по крайней мере, в два раза более высокую производительность, чем решение @Atiris :)
Как вы думаете неделю начинается? В воскресенье? В понедельник? –
Это не на 100% понятно, что вы просите. Можете ли вы предоставить более подробное описание? – Sean
Возможный дубликат: http://stackoverflow.com/questions/21599895/find-the-current-week-from-datetime-now-and-how-to-find-given-date-between-curre (тот же автор) – Atiris