C#如何获取具体的某天是一个月份的第几个星期几

jame_peng 2007-06-29 10:23:15
如:8月的第二个星期三,我这个主要是做预订系统
...全文
586 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2007-06-29
  • 打赏
  • 举报
回复
我没加参数边界检查...自己写吧...

/// <summary>
/// 返回指定的日期
/// </summary>
/// <param name="year">年(1 到 9999)</param>
/// <param name="month">月(1 到 12)</param>
/// <param name="index">索引(1 到 5)</param>
/// <param name="week">星期, DayOfWeek 枚举值</param>
/// <returns></returns>
public DateTime GetDayOf(int year, int month, int index, DayOfWeek week)
{
DateTime dt = new DateTime(year, month, 1);
DayOfWeek dw = dt.DayOfWeek;
dt = dt.AddDays((index - 1) * 7 - (int)dw + (int)week);
return dt;
}
-过客- 2007-06-29
  • 打赏
  • 举报
回复
你这里有不明确的地方,比如说2007-06-01,这是6月第一个星期五,那2007-06-05是6月第一个星期二,还是6月第二个星期二

也就是你这里的第几个是第几周的星期几,还是星期几在这个月出现的次数

这点确定了,自己写个方法就很容易了
mengxiang1618 2007-06-29
  • 打赏
  • 举报
回复
public static string xingqi(string d) //判断星期几
{
string reslut = null;
string xq = Convert.ToDateTime(d).DayOfWeek.ToString();
switch(xq)
{
case "Monday":
reslut = "1";
break;
case "Tuesday" :
reslut = "2";
break;
case "Wednesday" :
reslut = "3";
break;
case "Thursday" :
reslut = "4";
break;
case "Friday" :
reslut = "5";
break;
case "Saturday":
reslut = "6";
break;
case "Sunday":
reslut = "7";
break;
default:
reslut = "7";
break;
}
return reslut;

}
public static int WeekOfMonth(string d) //第几周
{
DateTime day = Convert.ToDateTime(d);
int daysOfWeek=7;
if ( day.AddDays(0-daysOfWeek).Month < day.Month)
return 1;
if ( day.AddDays(0-2*daysOfWeek).Month < day.Month)
return 2;
if ( day.AddDays(0-3*daysOfWeek).Month < day.Month )
return 3;
if ( day.AddDays(0-4*daysOfWeek).Month < day.Month)
return 4;

return 5;
}
NekChan 2007-06-29
  • 打赏
  • 举报
回复
首先需要确认,如何确定某个月的第一个星期,是完整的一周算一个星期还是有一天在本月,则算本月的星期?
yangsongshuang 2007-06-29
  • 打赏
  • 举报
回复
是得自己写方法了
rononwang 2007-06-29
  • 打赏
  • 举报
回复
...自己写个算法就行咯
参数format格式详细用法  格式字符 关联属性/说明  d ShortDatePattern  D LongDatePattern  f 完整日期和时间(长日期和短时间)  F FullDateTimePattern(长日期和长时间)  g 常规(短日期和短时间)  G 常规(短日期和长时间)  m、M MonthDayPattern  r、R RFC1123Pattern  s 使用当地时间的 SortableDateTimePattern(基于ISO8601)  t ShortTimePattern  T LongTimePattern  u UniversalSortableDateTimePattern 用于显示通用时间的格式  U 使用通用时间的完整日期和时间(长日期和长时间)  y、Y YearMonthPattern  C# 日期格式转换  下表列出了可被合并以构造自定义模式的模式。这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。如果自定义模式包含空白字符或用单引号括起来的字符,则输出字符串页也将包含这些字符。未定义为格式模式的一部分或未定义为格式字符的字符按其原义复制。    格式模式 说明  d 月中的某一天。一位数的日期没有前导零。  dd 月中的某一天。一位数的日期有一个前导零。  ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。  dddd 周中某天的完整名称,在 DayNames 中定义。  M 月份数字。一位数的月份没有前导零。  MM 月份数字。一位数的月份一个前导零。  MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。  MMMM 月份的完整名称,在 MonthNames 中定义。  y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。  yy 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。  yyyy 包括纪元的四位数的年份。  gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。  h 12 小时制的小时。一位数的小时数没有前导零。  hh 12 小时制的小时。一位数的小时数有前导零。  H 24 小时制的小时。一位数的小时数没有前导零。  HH 24 小时制的小时。一位数的小时数有前导零。  m 分钟。一位数的分钟数没有前导零。  mm 分钟。一位数的分钟数有一个前导零。  s 秒。一位数的秒数没有前导零。  ss 秒。一位数的秒数有一个前导零。  f 毫秒的小数精度为一位。其余数字被截断。  ff 毫秒的小数精度为两位。其余数字被截断。  fff 毫秒的小数精度为三位。其余数字被截断。  ffff 毫秒的小数精度为四位。其余数字被截断。  fffff 毫秒的小数精度为五位。其余数字被截断。  ffffff 毫秒的小数精度为六位。其余数字被截断。  fffffff 毫秒的小数精度为七位。其余数字被截断。  t 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项的第一个字符(如果存在)。  tt 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项(如果存在)。  z 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。  zz 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。  zzz 完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。  : 在 TimeSeparator 中定义的默认时间分隔符。  / 在 DateSeparator 中定义的默认日期分隔符。  % c 其中 c 是格式模式(如果单独使用)。如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字符。  \ c 其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,请使用“\\”。

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧