当前位置: 首页 > 知识库问答 >
问题:

如何得到上个月第一次的确切日期和时间?

井学
2023-03-14

我希望在00:00:00z获得上个月第一天的确切日期。
所以,下面是我当前的解决方案

public static String getStartingDateAndTimeOfLastMonth() {
    int dayOfCurrentMonth = ZonedDateTime.now().getDayOfMonth();
    return ZonedDateTime.now()
                        .minusDays(dayOfCurrentMonth - 1)
                        .minusMonths(1)
                        .format(DateTimeFormatter.ISO_INSTANT);
}

当我调用moethod:

String startDate = CustomUtilsFunctions.getStartingDateAndTimeOfLastMonth();
System.out.println("startDate: " + startDate);

当前解的输出为:

startDate: 2021-05-01T07:22:10.389Z
startDate: 2021-05-01T00:00:00.000Z

共有1个答案

耿弘阔
2023-03-14

您可以使用java.time.yearmonth(像这个月),减去一个月得到最后一个月,而不是使用today作为基数。然后开始它的第一天。在UTC中执行所有操作,然后按需要格式化:

public static String getStartingDateAndTimeOfLastMonth() {
    // get the current month and subtract one to get the last
    YearMonth lastMonth = YearMonth.now().minusMonths(1);
    // then return its first day
    return lastMonth.atDay(1)                
                    // at the beginning of the day in UTC
                    .atStartOfDay(ZoneOffset.UTC)
                    // formatted as desired
                    .format(
                        DateTimeFormatter.ofPattern(
                            "uuuu-MM-dd'T'HH:mm:ss.SSSX",
                            Locale.ENGLISH
                        )
                    );
}

今天(2021年6月10日)输出:

2021-05-01T00:00:00.000Z

注意:zoneddatetime的默认格式将忽略秒和秒的分数(如果它们为零)。
如果您对2021-05-01T00:00Z没有问题,可以替换

    .format(
        DateTimeFormatter.ofPattern(
            "uuuu-MM-dd'T'HH:mm:ss.SSSX",
            Locale.ENGLISH
        )
    );
 类似资料:
  • 我想知道特定月份/年份的第一个星期一的日期。 我所拥有的: 我基本上有两个int变量,一个代表年份,一个代表月份。 我想要的是: 我想知道这个月的第一个星期一,最好是整数或整数值。 例如: 我有2014年和1月,这个月的第一个星期一是6号,所以我想返回6号。 问题: 我原以为我可以用做到这一点,但我在设置日历时遇到了问题,因为只有年份和月份可用。此外,我不知道如何使用返回月份/年份的第一个星期一。

  • 我有一个LocalDateTime对象,我想得到这个月的最后一个日期。所以如果localDateTime指向今天的10月29日。我想把它改为10月31日 有没有干净简单的方法 我的想法: 一种方法是得到这个月,然后做一个转换声明。但这将是一个漫长而乏味的过程。不确定是否有内置的方法来做同样的事情

  • 当我运行上面的查询以从当前日期获取上个月的第一天和最后一天时,我得到了一个如下所述的错误。 错误:Amazon无效操作:函数pg_catalog.date_diff(“未知”,整数,不带时区的时间戳)不存在;[SQL State=42883,DB ErrorCode=500310] 请帮我解决这个问题。

  • 我需要一个解决方案来解决返回日(周一、周二…),当我输入诸如年,月,日期。

  • 问题内容: 如何使用PHP查找一个月中的第一个和最后一个日期?例如,今天是2010年4月21日。我想找到2010年4月1日和2010年4月30日。 问题答案: 最简单的方法是使用,它可以让您将硬编码的值与从时间戳提取的值进行混合。如果您不提供时间戳记,它将以当前日期和时间为准。 在给定的字符串(例如)中搜索特定的符号,并将其替换为时间戳中的值。因此,我们可以使用这些符号从时间戳中提取所需的值和格式

  • 问题内容: 我正在尝试使用python获取上个月的日期。这是我尝试过的: 但是,这种方法很糟糕,原因有两个:首先,它返回2012年2月的20122(而不是201202),其次它将返回0而不是1月的12。 我已经用bash解决了这个麻烦 我认为,如果bash为此目的具有内置方式,那么功能更强大的python应该比强迫编写自己的脚本来实现此目标更好。我当然可以做类似的事情: 我没有测试过此代码,也不想