查找会计年度特定日期所属的季度

2024-03-20

我正在使用 java 1.7,如何查找会计年度的特定日期所属的季度,该季度可以从任何月份的 1 日(JAN-DEC)开始,并且还需要该季度的开始日期和结束日期。

即假设FY(2017年4月1日 - 2018年3月31日),那么日期2017年6月26日属于第一季度(第一季度),季度开始日期为2017年10月1日,结束日期为2017年12月31日等


java.time

java.time 是现代 Java 数据和时间 API,可以满足您的大部分需求。只有死了才知道你的财政年度。您要求的季度比 java.time 支持的 ISO 日历系统中使用的季度少一个。所以我的技巧是从日期中减去四分之一,然后查询 java.time 有关季度和年份的信息。这将为您提供所需的数字。

在代码中,尝试不同的日期:

    LocalDate[] exampleDates = {
            LocalDate.of(2020, Month.JANUARY, 1),
            LocalDate.of(2020, Month.JUNE, 30),
            LocalDate.of(2020, Month.AUGUST, 22),
            LocalDate.of(2020, Month.OCTOBER, 1),
            LocalDate.of(2021, Month.MARCH, 31),
    };
    
    for (LocalDate date : exampleDates) {
        LocalDate syntheticQuarterDate = date.minus(1, IsoFields.QUARTER_YEARS);
        
        // Get quarter number and year as int
        int quarter = syntheticQuarterDate.get(IsoFields.QUARTER_OF_YEAR);
        int year = syntheticQuarterDate.getYear();
        System.out.format("Quarter: %d; year: %d%n", quarter, year);
    }

输出是:

Quarter: 4; year: 2019
Quarter: 1; year: 2020
Quarter: 2; year: 2020
Quarter: 3; year: 2020
Quarter: 4; year: 2020

假设你想要一个像这样的字符串Q42019而不是数字。在这种情况下,最好使用格式化程序:

    DateTimeFormatter quarterFormatter
            = DateTimeFormatter.ofPattern("QQQuuuu", Locale.ENGLISH);

现在对于每个日期执行以下操作:

        // Print a string like "Q42019"
        String quarterString = syntheticQuarterDate.format(quarterFormatter);
        System.out.println(quarterString);

使用与之前相同的日期输出:

Q42019
Q12020
Q22020
Q32020
Q42020

问题:这适用于 Java 7 吗?

java.time 在 Java 7 上运行良好。它至少需要Java 6.

  • 在 Java 8 及更高版本以及较新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
  • 在非 Android Java 6 和 7 中,获取 ThreeTen Backport,即现代类的向后移植(ThreeTen for JSR 310;请参阅底部的链接)。
  • 在较旧的 Android 上,可以使用脱糖或 Android 版本的 ThreeTen Backport。它被称为 ThreeTenABP。在后一种情况下,请确保从以下位置导入日期和时间类org.threeten.bp与子包。

Links

  • Oracle 教程:日期时间 https://docs.oracle.com/javase/tutorial/datetime/解释如何使用 java.time。
  • Java 规范请求 (JSR) 310 https://jcp.org/en/jsr/detail?id=310, where java.time首次被描述。
  • ThreeTen 后移植项目 http://www.threeten.org/threetenbp/,向后移植java.time到 Java 6 和 7(JSR-310 为 ThreeTen)。
  • 通过脱糖提供 Java 8+ API https://developer.android.com/studio/write/java8-support-table
  • 三十ABP https://github.com/JakeWharton/ThreeTenABP, Android 版 ThreeTen Backport
  • 问题:如何在Android项目中使用ThreeTenABP https://stackoverflow.com/questions/38922754/how-to-use-threetenabp-in-android-project,有非常详尽的解释。
  • 我的回答也是受到启发而写的这个重复的问题:Java:如何根据给定日期获取季度[重复] https://stackoverflow.com/q/63404039/5772882
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找会计年度特定日期所属的季度 的相关文章

随机推荐

  • Android Holo 主题不包含多行微调器下拉项[重复]

    这个问题在这里已经有答案了 我最近刚刚在我的 Android 应用程序中实现了全息主题 执行此操作后 我拥有的任何下拉项长为多行的微调器都不会将文本换行为多行 每个下拉项目都保留在一行上并被截断为一定的长度 这是我的微调器下拉资源的 xml
  • 如何在 pyspark - dataframe 中将月份名称更改为不同的语言

    我正在尝试使用以下配置在 Databricks 上创建 日期 表 Get date range dateFrom dbutils widgets get date from dateTo dbutils widgets get date t
  • 在客户端计算机上安装 BCP 而不安装 SQL Server?

    我使用从数据库导出数据BCP实用程序 我想在客户端计算机上安装 bcp 我不想在客户端计算机上安装 SQL Server 2008 他们是否有可用于仅安装 bcp 的最小安装程序 这是一项紧急任务 提前致谢 您必须使用其中之一SQL Ser
  • 样式表中的单位“em”取决于什么。 CSS

    em根据屏幕尺寸调整尺寸 是的 但很困惑 em 取决于浏览器设置吗 哪些设置 或者 em 取决于屏幕分辨率 或者帮助它依赖什么以及从哪里可以更改这些元素以观察使用 em 时大小的差异 1em 等于当前字体大小 2em 表示当前字体大小的 2
  • 停止 JavaScript 中挂起的异步函数

    这里我有两个同时运行的 JS 异步函数 当一个结束 回调已运行 时 我想阻止另一个继续 但是 这是我的问题 我无法使用全局变量 然后 我想知道是否可以停止 JS 中的待处理函数或任何方法来解决我的问题 我将不胜感激任何答案 EDIT 一些澄
  • 修改后的 ClaimsPrincipal 无效

    我正在使用 ASP NET MVC Identity2 我添加了 名字 自定义ClaimPrincipal public async Task
  • 任意泛型的 Typescript 映射

    我试图定义两种类型 它们应该类似于 export type IQuery
  • 如何在 SVG 中嵌入 schema.org 标记?

    我希望向 SVG 文件添加语义 并希望使用 schema org 术语 SVG 有执行此操作的语法吗 我的第一次尝试是
  • LaTeX 中的脚注间距

    我正在写论文 研究生院说我需要在多个脚注之间留一个空格 而且文本和脚注开头之间的空格太小 有没有办法做到这一点 任何帮助是极大的赞赏 footnotesep是脚注之间的空格 setlength footnotesep 0 5cm footi
  • 将一堆扩展名为“.jpg”的 PNG 图像重命名为“.png”

    所以我有一个包含数千个图像文件的文件夹 所有这些文件都保存为 jpg 问题是其中一些文件实际上是 PNG 图像文件 因此它们无法在很多程序中打开 除非我手动将其扩展名更改为 png 例如 Ubuntu 图像查看器会抛出此错误 解释 JPEG
  • 销毁并重新初始化引导滑块

    我正在使用这里找到的 Bootstrap slider https github com seiyria bootstrap slider https github com seiyria bootstrap slider目前正在使用 v1
  • .NET 通过反射获取私有属性

    我有以下场景 装配A public abstract class MyBaseEntity Uncompleted method public void addChild
  • Jquery中的Ajax代码完成后执行下一行

    需要帮忙 我正在函数内执行 ajax 调用 Ajax 调用的结果是函数的返回值 代码如下 function tabstrip ajax type POST url WebService MessageUnratedCount asmx Ge
  • 仅将分支的最后一次提交合并到 master 中

    我使用以下命令创建了一个测试存储库 mkdir test repo cd test repo git init 我在目录中创建了一个文件并提交了更改 echo 0 gt file txt git add file txt git commi
  • git log 每个文件的提交计数

    我正在尝试从中获取以下内容git log 1 存储库中每个文件的提交次数 两个日期之间 2 编辑每个文件的贡献者数量 两个日期之间 3 编辑每个文件的不同贡献者的数量 两个日期之间 我试过玩git log但我并没有那么成功 我也尝试过寻找脚
  • 带有 OR 条件的 COUNTIFS 给出#SPILL!因此

    我有以下公式 COUNTIFS MachineData N N Arlington RenewNorfolk MachineData X X Y MachineData E E lt gt rinse MachineData C C gt
  • 如何在 Objective C 中找到 HH:MM:SS 格式的两个日期之间的差异?

    我认为标题本身说明了我想做什么 不过 让我澄清一下 我现在正在开发一个应用程序 其中有两个日期 格式如下 年 月 日 时 分 SS 我需要使用它来计算格式中两个日期之间的差异 HH MM SS 我在维基上搜索并尝试了运气但没有成功 有人可以
  • 我应该使用 int 还是 Int32

    In C int and Int32是同一件事 但我读过很多次int优先于Int32没有给出任何理由 有什么原因吗 我应该关心吗 两者确实是同义词 int看起来会更熟悉一些 Int32使 32 位对于阅读代码的人来说更加明确 我会倾向于使用
  • REST 确保 JSON 模式验证不起作用

    我正在使用 Spring Boot 和 REST Assured 来测试 REST API 我正在尝试使用 JSON 模式验证的示例 但它引发了此错误 java lang IllegalArgumentException Schema to
  • 查找会计年度特定日期所属的季度

    我正在使用 java 1 7 如何查找会计年度的特定日期所属的季度 该季度可以从任何月份的 1 日 JAN DEC 开始 并且还需要该季度的开始日期和结束日期 即假设FY 2017年4月1日 2018年3月31日 那么日期2017年6月26