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

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

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

一、使用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. 【设计模式】Builder

    前言 Builder设计模式,允许一步一步构建一个复杂的对象.将构建步骤抽象出来,让每个具体的Builder去实现构建步骤的内容.这样子就可以用同样的构建步骤,构建出不一样的对象.在Director类 ...

  2. 图解Java数据结构之单链表

    本篇文章介绍数据结构中的单链表. 链表(Linked List)介绍 链表可分为三类: 单链表 双向链表 循环列表 下面具体分析三个链表的应用. 单链表 链表是有序的列表,它在内存中存储方式如下: 虽 ...

  3. 011.maven 继承与聚合

    聚合:对于聚合模块来说,它知道有哪些被聚合的模块,而对于被聚合的模块来说,它们不知道被谁聚合了,也不知道它的存在: 继承:对于继承关系的父POM来说,它不知道自己被哪些子模块继承了,对于子POM来说, ...

  4. web下载附件及修改名称

    /** * @param: url 附件地址 * @param: filename 下载后的文件名 */ function download(url, filename) { getBlob(url, ...

  5. 用Random产生1到10之间的一个随机数

    bat中怎样用Random产生1到10之间的一个随机数? 当然是用%random%,示例: @echo off rem 用Random产生1到10之间的一个随机数 set num=%random% s ...

  6. 多线程学习笔记(一) InvokeRequired 和 delegate

    入门示例: 假如有一个label,我们希望像走马灯一样,从1显示到100 private void button1_Click(object sender, EventArgs e) { ; i &l ...

  7. Setting up the data and the model

    Table of Contents: Setting up the data and the model Data Preprocessing Weight Initialization Batch ...

  8. V4l2初识(七)-----------浅析app获取虚拟摄像头数据的过程

    继续分析数据的获取过程: 1.请求分配的缓冲区: ioctl(4,VIDIOC_REQBUFS) vidioc_reqbufs 2.查询和映射缓冲区   ioctl(4,VIDIOC_QUERYBUF ...

  9. 青春正盛,未来可期。马上2020了,低成本投资自己:vip测试提升圈

    应部分群友再三强烈建议要求,组建了一个测试提升小分队,相约vip测试提升圈, 这里汇集了一群热爱学习.渴望提升的测试小伙伴,大家都朝着自己的梦想拼命努力: 此圈将助你在接口自动化和性能方向全面提升,提 ...

  10. <Random> 384 398

    384. Shuffle an Array random.nextInt(n) 返回[0, n) 的随机数,故要+1: class Solution { private int[] nums; pri ...