ASP.NET計算日期是本月的第幾周

//計算當前日期是本月的第幾周
private int GetWeekNumInMonth(DateTime daytime)
{
int dayInMonth = daytime.Day;
//本月第一天
DateTime firstDay = daytime.AddDays(1 - daytime.Day);
//本月第一天是周几
int weekday = (int)firstDay.DayOfWeek == 0 ? 7 : (int)firstDay.DayOfWeek;
//本月第一周有几天
int firstWeekEndDay = 7 - (weekday - 1);
//当前日期和第一周之差
int diffday = dayInMonth - firstWeekEndDay;
diffday = diffday > 0 ? diffday : 1;
//当前是第几周,如果整除7就减一天
int WeekNumInMonth = ((diffday % 7) == 0
? (diffday / 7 - 1)
: (diffday / 7)) + 1 + (dayInMonth > firstWeekEndDay ? 1 : 0);
return WeekNumInMonth;
}
/// <summary>
/// 計算前week周的起始日期
/// </summary>
/// <param name="week">需要計算的前week周(0為當前周,1為前一周.....)</param>
/// <param name="dt_StartTime">周一日期</param>
/// /// <param name="dt_StartTime">周日日期</param>
/// <returns></returns>
public void GetWeekStartEndDate(DateTime dt, int week, out DateTime dt_StartTime, out DateTime dt_EndTime)
{
int n_DayOfWeek = int.Parse(dt.DayOfWeek.ToString("d"));
dt_StartTime = DateTime.Parse(dt.AddDays(-n_DayOfWeek - week * 7 + 1).ToString("yyyy/MM/dd"));
dt_EndTime = DateTime.Parse(dt.AddDays(-n_DayOfWeek - (week - 1) * 7).ToString("yyyy/MM/dd"));
if (dt_EndTime > dt)
{
dt_EndTime = dt;
}
}

//計算時間所對應在本年的周別
public int GetWeekOfYear(DateTime dt)
{
int firstWeekEnd = 7 - Convert.ToInt32(DateTime.Parse(dt.Year + "-1-1").DayOfWeek);
int currentDay = dt.DayOfYear;
return Convert.ToInt32(Math.Ceiling((currentDay - firstWeekEnd) / 7.0)) + 1;
}

//計算本周的起始日期
public DateTime GetCurrentWeekStartDate(DateTime dt)
{
int n_DayOfWeek = int.Parse(dt.DayOfWeek.ToString("d"));
return DateTime.Parse(dt.AddDays(-n_DayOfWeek + 1).ToString("yyyy/MM/dd"));
}

时间: 2024-10-17 18:09:48

ASP.NET計算日期是本月的第幾周的相关文章

各種日期時間計算

各種日期時間計算 //改變日期format string startStr = start.ToString("yyyy-MM-dd HH:mm:ss"); DateTime dt = Convert.ToDateTime(startStr);//轉回DateTime P.S format 大小寫意義不同: MM=month, mm=Minutes, HH=24hours, hh=12hours //日期時間相加減 DateTime start = Convert.ToDateTime

配置凍結庫存是否參加MRP計算及PO的相關設置

SPRO->生產->物料需求計劃->計劃->MRP計算->庫存->定義轉移庫存/凍結庫存/有限庫存的可用性 2.交貨完成 SPRO->物料管理->庫存管理和實際庫存->收貨->設置交貨完成標誌 標記完成了的,是不會參與MRP計算的,但是還可以繼續收貨的 3.設置容差 後台設置:SPRO->物料管理->庫存掛家裡和實際庫存->收貨->設置容差限制 4.退貨PO A.自動建立採購訂單 後台設置:SPRO->物料管理-&g

Delphi APP 開發入門(三)簡易計算機

Delphi APP 開發入門(三)簡易計算機 分享: Share on facebookShare on twitterShare on google_plusone_share 閲讀次數:6823 發表時間:2014/05/20 tags: 行動開發 教學 App Delphi XE6 Android iOS 上週大家學會了設定Android/iOS編譯環境以及寫出第一個Hello World之後,我們今天要來寫第一隻APP簡易計算機. 新增一個空白的APP專案後,我們在畫面上新增一個Edi

計算兩組經緯度座標間的距離

/** * 計算兩組經緯度座標間的距離 * params:lat1緯度1,lng1經度1,lat2緯度2,lng2經度2,len_type(1:m|2:km); * Echo GetDistance($lat1,$lng1,$lat2,$lng2).'米'; */ function GetDistance($lat1,$lng1,$lat2,$lng2,$len_type=1,$decimal=2){ $EARTH_RADIUS=6378.137; //地球半徑,假設地球是規則的球體 $PI=3

擠出機步進馬達的 Steps per Unit 該如何計算?

擠出機步進馬達的 Steps per Unit 該如何計算? 這邊 Steps per Unit 指的是塑料往前推進1mm,步進馬達須要走幾步.依此定義,可知計算方式可以用 步進馬達轉一圈需要的步數 除以 步進馬達轉一圈塑料往前推的距離 來求解. 步進馬達轉一圈需要的步數這樣算: (360/馬達一步走幾度)*微步進細分數 馬達轉一圈塑料前進的距離這樣算: 2 * pi * (送料齒輪半徑 + 塑料半徑 - 齒痕深度)

計算機架構圖

一臺計算機能夠正常運行:有以下結構組成 從下到上: 第一:硬件 第二:Kernel 內核,即所謂操作系統 第三:庫,公共系統調用的資源,API,應用程序接口 第四:Shell,與人交互的shell,不需直接與內核或硬件打交道!如下圖

透過 bc 計算 pi

echo "scale=${num}; 4*a(1)" | bc -lq例如: echo "scale=5000; 4*a(1)" | bc -lq 4*a(1) 是 bc 主動提供的一個計算 pi 的函數,至於 scale 就是要 bc 計算幾個小數點下位數的意思.當 scale 的數值越大, 代表 pi 要被計算的越精確, 當然用掉的時間就會越多!可以以此来测试cpu的性能. 转自: http://linux.vbird.org/linux_basic/0340

华为机试—算日期

题目:算日期 输入一个日期,输出这是这一年的第几天.(题目中没有给出闰年的定义) 输入 20131231 输出 365 #include <stdio.h> //判断是否为闰年 int isleapyear(int year) { if(year%4==0 && year%100!=0 || year%400==0) return 1; return 0; } int main() { int year,month,day; char a[8]; int leap[13]={0

計算客/小教官(xjb)

題目鏈接:https://nanti.jisuanke.com/t/366 題意:中文題誒~ 思路: 先通過給出的條件構造一個符合題意的數組(可以是任意一個符合條件的數組,菜雞不會證明: 然後構造的數組和初始序列1, 2, 3, 4...n最少不同元素的個數就是答案: 這點是比較好理解的:題目中給出的b1, b2, ...bm可以是不連續的, 那麼如果每次選擇的m個與初始序列不同位置的元素並且通過一次操作後可以到達初始序列所在位置: 那麼所需代價肯定是最小的,總代價即爲位置不同的元素的數目. 所