最近项目中需要获取当前周是今年的第几周,这东西听起来不难,但是还挺有意思的。

在中国,一周是从周一开始算,周天结束,在国外就不是这样了,是从周天到周六为一个周。

有很多种方式去实现在这个功能,下面介绍两种:

一、使用CultureInfo

这种方式,只需要修改CultureInfo里面的参数就行了,美国是en-US,其他国家的自行替换就行。

需要注意的就是,在很多情况下,每年的最后一周是跨年的,一般会当成下一年的第一周来算,这个得需要按业务处理。

public static int GetWeekNumOfTheYear(DateTime date)
{
CultureInfo myCI = new CultureInfo("zh-CN");
Calendar myCal = myCI.Calendar;
CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
int weekOfYear = myCal.GetWeekOfYear(date, myCWR, myFirstDOW);
return weekOfYear;
}

二、使用GregorianCalendar

这种也可以获取不同地区的当前周所在的位置,只需要修改GregorianCalendarTypes就行,可以使用 GregorianCalendarTypes.Localized

public static int GetWeekNumOfTheYear1(DateTime date)
{
//获取指定时间是当年的第几周
GregorianCalendar gc = new GregorianCalendar(GregorianCalendarTypes.USEnglish);
int weekOfYear = gc.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
return weekOfYear;
}

这两种方式都在System.Globalization 命名空间下,使用起来还是比较方便的。

调用方式也很简单,如下,因为业务需要,每年的最后一周是跨年的,需要当成下一年的第一周来算。

 public static string GetCurrentWeekNum(DateTime dt)
{
string result = string.Empty;
var dt1 = GetWeekFirstDay(dt);
var dt2 = GetWeekLastDay(dt);
//Whether or not to cross the year
if (dt1.Year == dt2.Year)
{
result = string.Format("{0} W {1}", dt1.Year, GetWeekNumOfTheYear(dt).ToString(""));
}
else
{
result = string.Format("{0} W 01", dt2.Year);
}
return result;
}

.Net 获取当前周是第几周的更多相关文章

  1. .net 获取当前周及根据年和周获取起始结束时间

    获取当前日期周数 int str = new System.Globalization.GregorianCalendar().GetWeekOfYear(System.DateTime.Now, S ...

  2. PHP获取日期对应星期、一周日期、星期开始与结束日期的方法

    本文实例讲述了PHP获取日期对应星期.一周日期.星期开始与结束日期的方法.分享给大家供大家参考,具体如下: /* * 获取日期对应的星期 * 参数$date为输入的日期数据,格式如:2018-6-22 ...

  3. jq获取今天、昨天、一周时间

    不少后台文章管理系统就有今天.明天.一周内.全部的分类展示,用Jquery获取今天.明天.一周内的时间节点(如下图) html页面代码: <div class="date-list-c ...

  4. php获取当前周的第一天与最后一天

    1 2 3 4 5 6 7 8 9 10 // 当前日期   $sdefaultDate = date("Y-m-d");   // $first =1 表示每周星期一为开始日期  ...

  5. winform中获取当前周次

    /*方法一*/ var dt = DateTime.Now; //找到今年的第一天是周几 int firstWeekend = Convert.ToInt32(DateTime.Parse(dt.Ye ...

  6. PHP获取一段时间内的每个周几, 每月几号, 遇到特殊日子就往后延

    2016年11月1日 16:18:19 星期二 主要用到的函数是 strtotime() strtotime('+1 Tuesday', $timestamp) 获取下周二, 从时间戳$timesta ...

  7. JS中使用时间戳,获取当前日期,计算前一周的日期~

    今天项目中用到了一点 随便记录一下 function timestampToTime(timestamp) { );//时间戳为10位需*1000,时间戳为13位的话不需乘1000 var Y = d ...

  8. Java获取日期属于当年第几周

    String today = "2013-01-14"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM- ...

  9. Python获取时间范围内日期列表和周列表的函数

    1.获取日期列表 # -*- coding=utf-8 -*- import datetime def dateRange(beginDate, endDate): dates = [] dt = d ...

随机推荐

  1. [git] your branch is ahead of ... 解决办法

    出现该问题表示在次之前已经有X个commite了,执行命令git reset --hard HEAD~X解决其中X表示有多少次提交,此命令的意思是回退到x个commit之前.git reset --h ...

  2. JAVAWEB复习-JS

    1.概述 JavaScript是基于对象和事件的脚本语言,主要应用在客户端 特点:信息动态交互,不可直接访问本地磁盘,只要是可以解析js的浏览器都可以跨平台执行 2.JS和JAVA比较 a:JS是面向 ...

  3. NLP中的预训练语言模型(五)—— ELECTRA

    这是一篇还在双盲审的论文,不过看了之后感觉作者真的是很有创新能力,ELECTRA可以看作是开辟了一条新的预训练的道路,模型不但提高了计算效率,加快模型的收敛速度,而且在参数很小也表现的非常好. 论文: ...

  4. 可迭代对象,迭代器对象,for循环

    迭代器:迭代的工具.迭代是更新换代,如你爷爷生了你爹,你爹生了你,迭代也可以说成是重复,并且但每一次的重复都是基于上一次的结果来的.如计算机中的迭代开发,就是基于软件的上一个版本更新.以下代码就不是迭 ...

  5. 201871010131-张兴盼《面向对象程序设计(java)》第十五周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://ww ...

  6. 201871020225-牟星源《面向对象程序设计(java)》第十一周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第十一周学习总结 博文正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu ...

  7. 02-人脸识别-基于MTCNN,框选人脸区域-detect_face

    (本系列随笔持续更新) 这部分代码是基于参考中的链接,修改后适用于TensorFlow1.6.0版本的代码.由于TensorFlow的频繁更新,所以不一定支持后续新或者就版本,特此说明. 程序的最初版 ...

  8. VIJOS-P1064 迎春舞会之数字舞蹈

    洛谷 P1538 迎春舞会之数字舞蹈 洛谷传送门 JDOJ 1245: VIJOS-P1064 迎春舞会之数字舞蹈 JDOJ传送门 Description ​ 在越来越讲究合作的时代,人们注意的更多的 ...

  9. OpenVINO 目标检测底层C++代码改写实现(待优化)

    System: Centos7.4 I:OpenVINO 的安装 refer:https://docs.openvinotoolkit.org/latest/_docs_install_guides_ ...

  10. pycharm配置mysql数据库连接访问

    如图,这是打开后的默认界面.找到界面的“Data base”选项并点击. 这里可以看到当前项目配置的数据库,如果为空,表示未配置数据库.我们可以点击上方“+”号来配置,点击“+”号.在下拉框中我们选择 ...