【问题标题】:Code works for "Today's Date" but I need to figure out for "This Week"代码适用于“今天的日期”,但我需要弄清楚“本周”
【发布时间】:2022-07-01 00:14:14
【问题描述】:

如果它符合“今天”的条件,我会在我的 Razor 页面上循环并转动显示的行 Tan。 如何测试日期是否在“本周”范围内?我知道这与“AddDays”的“Between”语法有关,但我似乎无法理解。

    @foreach (var item in Model.Dances_Moderated)
{

    DateStuff obj = new DateStuff();

    var varNextEvent = obj.fNextEvent(item.RecurYesNo, item.SingleDate, item.RecurWeekOfMonth, item.RecurDayOfWeek);
    string bgcolor = "Transparent";

    @if (varNextEvent.Equals(DateTime.Today.ToShortDateString()))
    {
        bgcolor = "tan";
    }

【问题讨论】:

标签: c# datetime razor


【解决方案1】:

“同一周”的概念因日历类型而异。所以首先你必须得到一个代表你感兴趣的文化的日历。

从那里,您可以使用GetWeekOfYear 来确定日期所在的星期几。您需要决定一周是从星期日开始还是从其他日期开始。

//Get calendar for the right culture
var culture = new CultureInfo("en-US");
var calendar = culture.Calendar;

//Get the week # of the current day per the system clock
int currentWeek = calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);

//Get the week # of the event to compare it to
int weekOfEvent = calendar.GetWeekOfYear(varNextEvent , CalendarWeekRule.FirstDay, DateOfWeek.Sunday);

//Check if they're the same
bool isSameWeek = (currentWeek == weekOfEvent);

话虽如此,如果您提前确定您使用的是标准的西方公历,并且您可以接受从星期日开始的几周,那么您可以通过一些数学来作弊。

var currentWeekStart = Datetime.Today.AddDays(0 - DateTime.Today.DayofWeek);
var currentWeekEnd = currentWeekStart.AddDays(7);
bool isSameWeek = (currentWeekStart <= varNextEvent) && (varNextEvent  < currentWeekEnd);

【讨论】:

猜你喜欢
  • 2020-09-03
  • 2013-11-21
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多