已知某年和某月,获得该月的周数及每周的始末时间

2023-10-31

最近阿Q在项目开发中遇到一个小问题:

后台统计:已知某年和某月,计算该月每周的销量。

这就要求我们要获取特定年月的周数以及每周的始末时间来对数据库数据进行筛选。大家一看到这个问题是不是都会想起java的日期类Calendar,然后会调用getActualMaximum(Calendar.WEEK_OF_MONTH)来查询该月有多少个周啊?接下来,阿Q就给大家说一下该方法存在的问题以及解决方法。

众所周知,国外的每周都是从周日开始周六结束,而我们却是以周一开始,周日结束,因此我们在获得某月的周数时便会存在误差,下边就用程序进行讲解。

public class HelloWorld {
	
	 public static void main(String[] args) {
		  Calendar c= Calendar.getInstance();
		  c.set(Calendar.YEAR,2019);
         //因为月份是从下标0开始的,所以这里的“2”是三月份
		  c.set(Calendar.MONTH,2);
		  System.out.println("周数:"+c.getActualMaximum(Calendar.WEEK_OF_MONTH));
	 }
}

输出结果为周数:6,而实际为5周。阿Q为解决该问题就自己写了一段代码来实现此功能。

public static void main(String[] args) throws Exception {
    //随意定义
    String saeTime = "2019-03";
    //转换为时间类型
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
    Date dt = dateFormat.parse(saeTime);
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(dt);
    //获取本月的天数
    int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    //记录本月的周数
    int count = 0;
    //记录第一周的开始日期、最后一周的结束日期以及每周周日的日期
    List<Date> list = new ArrayList<Date>();
    for (int i = 1; i <= days; i++) {
        DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = dFormat.parse(saeTime + "-" + i);
        //清空calendar重新赋值
        calendar.clear();
        calendar.setTime(date);
        //获取该日期是一周中的第几天
        int k = new Integer(calendar.get(Calendar.DAY_OF_WEEK));
        //第一天且不是周天要记录一周的开始日期
        if(i==1 && k!=1){
            list.add(date);
        }
        if (k == 1) {
            //只要是周日,count就加1
            count++;
            //记录一周结束日期
            list.add(date);
        }
        if (k != 1 && i == days) {//若是本月最后一天,且不是周日也算一周也要加1
            count++;
            //记录最后一天日期
            list.add(date);
        }
    }
    System.out.println("该月有"+count+"周");
    for(int i=0;i<count;i++){
        Date firstDate = list.get(i);
        //开始时间为0时0分0秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        String firstTime = sdf.format(firstDate);
        Date secondDate = list.get(i+1);
        //结束时间为23时59分59秒
        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
        String secondTime = sDateFormat.format(secondDate);
        System.out.println("第"+(i+1)+"周开始时间"+firstTime+"结束时间"+secondTime);
    }
}

打印结果:

该月有5周
第1周开始时间2019-03-01 00:00:00结束时间2019-03-03 23:59:592周开始时间2019-03-03 00:00:00结束时间2019-03-10 23:59:593周开始时间2019-03-10 00:00:00结束时间2019-03-17 23:59:594周开始时间2019-03-17 00:00:00结束时间2019-03-24 23:59:595周开始时间2019-03-24 00:00:00结束时间2019-03-31 23:59:59

可能阿Q写的比较复杂,大家如果有简单的实现方法可以告诉阿Q,大家共用进步。想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

已知某年和某月,获得该月的周数及每周的始末时间 的相关文章

  • 日历控件 - 以编程方式突出显示日期

    我正在摆弄日历控件 但似乎无法完成对日期进行着色的简单任务 如果用户输入 7 个日期 我想在日历上对这些日期进行阴影处理 以便用户知道它们已被选择 本质上我想做 Calendar HighlightDate 5 1 11 gt 想象的哈哈我
  • 通过我的应用程序更新和删除 Android 中的日历事件

    谁能告诉我我该怎么做修改 编辑 和删除android日历事件这是用户自己使用我的 Android 应用程序添加的 我已经尝试了很多 但没有一个对我来说效果很好 我是第一次处理这些日历 我们有解决方案吗 看看这个问题 堆栈溢出 https s
  • 如何向java简单日期格式添加天数

    如何在使用简单日期格式获得的当前日期上添加 120 天 我看过一些关于它的帖子 但无法让它发挥作用 我的代码如下 SimpleDateFormat dateFormat new SimpleDateFormat dd MM yyyy get
  • 如何在目标c中获得该月的第n个星期日日期?

    如何在 Objective C 编码中获取第一个星期日或第 n 个星期日或星期一 任意一天 日期 例如 我只想每年在我的应用程序中显示友谊日的日期 但是 友谊是在八月的第一个星期日 所以 日期每年都会改变 在这里我需要找到每年八月的第一个星
  • Google Calendar API - 通过服务帐户访问自己的日历

    我想访问 Google Calendar API 以使用 Python 插入条目 我创建了一个服务帐号在Google API控制台上 添加私钥 下载它 但是 当我尝试修改同一帐户上的任何日历时 我收到以下错误消息 读书作品 Code is
  • 如何计算给定日期Android的周数

    我正在尝试从给定日期获取当前周数 即 如果我输入日期为 01 03 2013 那么我应该得到周数 9 请帮助我找到解决方案 Thanks 阿布舍克 您可以为该日期创建一个 Calendar 对象并通过以下方式获取星期 calendar ge
  • 查找日历的第一天

    我想做的是创建一个简单的日历 我想找到特定月份第一周的第一天 我的日历是星期一 gt 星期日日历 以下代码可以工作 但正如您所看到的 它并不是那么好 任何人都对如何获取日历中的第一个日期有更好的想法 var now new DateTime
  • 删除并添加回元素后,JQuery 单击功能不起作用

    这是我的点击功能 cal table tbody td on click function if this hasClass available alert asd 我遇到的问题是 在切换到下个月或上个月后 我在日历上的点击功能不起作用 例
  • 将日期添加到日历热图 R

    I m plotting a calender heat map using Paul Bleicher s calenderHeat R code https raw githubusercontent com iascchen VisH
  • Android 日历示例(如 Google 日历)[已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的 Android 应用程序中添加一个日历 用户可以在其中查看他们的每日日程安排 就像谷歌日历
  • Android 添加新日历

    我已经检查了所有从 Android 应用程序中创建新日历的方法 我见过的唯一方法是在最新的 api 版本中使用新的 Calendar API 但这似乎只有在您使用时才有效CalendarContract ACCOUNT TYPE LOCAL
  • 使用 .Net 创建 CalDAV 服务

    我想在我的应用程序中创建一个外部用户可以查看的日历 CalDAV 基本上是 WebDAV iCalendar 格式似乎得到了相对广泛的支持 尽管某些客户端 例如 Outlook 不太支持这种格式 不过对我来说完全是新的 我想外部发布事件 我
  • java.util.Calendar. 的默认时区是多少?

    Code public String testDate TimeZone setDefault TimeZone getTimeZone US Eastern Calendar fromDate Calendar getInstance D
  • 如何将多个网络请求合并到一个查询/表中?

    我想创建一个多年的加拿大假期日历 为此 我正在使用加拿大假期 ca api https canada holidays ca api 问题是 如果我想要多年 我需要为每年创建一个请求 然后附加它们 但这样做会创建很多我不想要或不需要的请求
  • 如何在日历中选择多个日期并将其显示在标签中

    假设我有日历 并且我想选择多个日期并在标签中显示 我使用了以下代码 但它无法正常工作 请更正 lblMultipleDate Text Calendar1 SelectedDates 0 ToShortDateString Label2 T
  • 为什么用java日历解析时会得到错误的月份

    Date fakeDate sdf parse 15 07 2013 11 00 AM Calendar calendar Calendar getInstance calendar setTime fakeDate int current
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • 如何为 Android 应用程序创建可扩展的日历服务后端?

    我们希望在我们的服务器上为 Android 应用程序的每个用户维护一个日历 该用户只有只读访问权限 这可能会导致我们的服务器有时每天创建超过 1000 个日历 如果我们使用像 Google 这样的日历 API 那就意味着每天从我们应用程序的
  • 从 Office 365 日历获取所有事件

    我需要获取 Office 365 日历中的所有事件 当前 GET 请求 https graph microsoft com v1 0 users https graph microsoft com v1 0 users userPrinci
  • React onClick 事件仅在渲染组件时触发

    动态渲染组件的 onClick 函数应通过 useState 设置所选日期 imgs 上的 onClicks 完全按照您的预期工作 没有任何问题 即使只是在其位置放置一个带有 onClick 属性的 div 也是行不通的 当组件渲染时 on

随机推荐

  • SQL 外键约束

    概念 外键用来让2张表的数据之间建立连接 从而保证数据的一致性和完整性 添加外键 第一种 在建表时直接添加 CREATE TABLE 表名 字段名 数据类型 CONSTRAINT 外键名称 FOREIGN KEY 外键字段名 REFEREN
  • Web Service

    1 1 Web Service 基本概念 Web Service 也叫 XML Web Service WebService 是一种可以接收从 Internet 或者 Intranet 上的其它系统中传递过来的请求 轻量级的独立的通讯技术
  • ajax填充没显示出来,ajax请求数据成功,页面的数据没有加载出来

    w3c的ajax的例子 点击按钮 ajax请求读取一个本地ajax txt文件 页面展示其内容 在chrome中打开页面 点击按钮请求成功 但是页面没有显示ajax txt的内容 这是为什么呢 代码和chrome截图如下 function
  • python 虚拟环境

    使用虚拟环境 创建一个完全独立的局部python环境 在此环境中 安装所有与这个项目相匹配的库 一个项目使用一个局部的独立的python环境 互相之间没有干扰 这个局部的独立的python环境就称为虚拟环境 完全模拟系统全局python环境
  • 达梦数据库 linux安装配置步骤

    数据库服务器安装 root TKWOA NWEB5 mount o loop data soft dm8 20210630 x86 rh6 64 ent 8 1 2 18 pac iso mnt root TKWOA NWEB5 root
  • 深度学习-yolov3

    卷积层 从一张完整图片中提取多个特征 池化层 选择一部分最明显的特征 全连接层 将最终选择的特征放在一起组合输出 残差网络 ResNet BN 详解 详解 博文 卷积神经网络中卷积层 池化层 全连接层的作用 池化层作用 shinemyang
  • mobaxterm连接到Linux虚拟机

    软件 VMware CentOS 7 mobaxterm 一 查看虚拟机host 在VMware启动虚拟机后 点击应用程序 再点击终端进入 输入ifconfig查看虚拟机host和用户名 密码是创建虚拟机时设的 红框是虚拟机的ip 下面的是
  • Qt程序crash定位问题

    文章目录 问题 思路 从windos日志获取出错位置 启动Qt命令行环境 问题 Qt程序由于某种未知错误Crash掉 如何定位到出错位置 思路 固件开发时 出错时KDB会弹出少数出错信息 包含出错位置 调用堆栈 可以由出错地址 配合objd
  • lab5:深入理解进程切换

    Linux中的进程切换由context switch函数完成 该函数位于源代码目录的kernel sched core c 中 代码如下 context switch函数 context switch switch to the new M
  • QWidget设置背景图及圆角

    在Qt开发过程中 QWidget是经常作为主窗体的父窗口 有时我们需要对主窗口设置背景 设置圆角以达到美观的效果 通常的有以下三种方法 qss QPalette设置以及paintEvent绘制 下面介绍这三种方法 背景设置介绍 方法一 se
  • Redis4 - 编译安装&连接

    下载安装 redis连接 redis信息查询 下载安装 1 源码下载 https redis io 目前最新版本 4 11 2 解压到指定文件夹 eg 我的放到 build下 3 编译 安装 cd build redis 4 0 11 新建
  • 简单快速复制CSDN上的博客到自己的电脑上(带图片和格式)

    准备工具 typora md编辑器 直接去官网https www typora io 下载 一直点下一步 下载好了后界面是这样的 清爽且好用 需要做一点设置 文件 偏好设置 图像 如下设置 软件已经安装好并且可以使用了 看到这里可能你会有疑
  • ctex插入中文的方法

    documentclass 12pt article 使用中日韩的文字宏包 usepackage CJK begin document 插入中文 hei 表示字体为黑体 kai 楷 li 隶 song 宋 begin CJK GBK hei
  • Python 面向对象详细讲解

    Python 面向对象详细讲解 Python从设计之初就已经是一门面向对象的语言 正因为如此 在Python中创建一个类和对象是很容易的 本章节我们将详细介绍Python的面向对象编程 如果你以前没有接触过面向对象的编程语言 那你可能需要先
  • 声音“三要素”---响度(loudness),音高(pitch),音色(timbre)

    由于人耳听觉系统非常复杂 迄今为止人类对它的生理结构和听觉特性还不能从生理解剖角度完全解释清楚 所以 对人耳听觉特性的研究目前仅限于在心理声学和语言声学 人耳对不同强度 不同频率声音的听觉范围称为声域 在人耳的声域范围内 声音听觉心理的主观
  • LLVM系列第十八章:写一个简单的IR处理流程Pass

    系列文章目录 LLVM系列第一章 编译LLVM源码 LLVM系列第二章 模块Module LLVM系列第三章 函数Function LLVM系列第四章 逻辑代码块Block LLVM系列第五章 全局变量Global Variable LLV
  • 已解决(Python3中urllib请求网页报错)AttributeError: module ‘urllib‘ has no attribute ‘request‘

    已解决 Python3中urllib请求网页报错 request urllib request Request url headers headers AttributeError module urllib has no attribut
  • error while loading shared libraries: libhwloc.so.5: cannot open shared object file: No such file or

    部署Slurm的过程中 计算节点执行 slurmd C 命令后 报错 root node2 slurmd C slurmd error while loading shared libraries libhwloc so 5 cannot
  • NPM 包管理工具

    NPM 包管理工具 1 1 什么是 NPM 1 2 NPM 初始化项目 1 3 安装模块 1 3 1 安装方式 1 3 2 本地安装 1 3 3 全局安装 1 3 4 生产环境模块安装 1 3 5 开发环境模块安装 1 4 批量下载模块 1
  • 已知某年和某月,获得该月的周数及每周的始末时间

    最近阿Q在项目开发中遇到一个小问题 后台统计 已知某年和某月 计算该月每周的销量 这就要求我们要获取特定年月的周数以及每周的始末时间来对数据库数据进行筛选 大家一看到这个问题是不是都会想起java的日期类Calendar 然后会调用getA