[英]How to find week of a year for a given date for a given start of week other than Monday?
[英]Start of previous year
**DATE FROM:**
def format=new java.text.SimpleDateFormat("yyyyMMdd")
def cal=Calendar.getInstance()
cal.get(Calendar.YEAR);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 31);
[format.format(cal.getTime())]
**DATE TO:**
def format=new java.text.SimpleDateFormat("yyyyMMdd")
def cal=Calendar.getInstance()
cal.add(Calendar.DAY_OF_MONTH,-cal.get(Calendar.DAY_OF_MONTH))
[format.format(cal.getTime())]
當年份變化時(2020 - 2021) - 它將上一年的一月與今年的一月混淆
我必須進行更正,以便在 1 月(12 月報告)中提取 31.01 - 31.12 期間的數據。 上一年的。
作業是錯誤的,因為它從 31.01.2021 到 31.12.2020 提取數據
// retrieve details of the current date
def cal = Calendar.instance;
def currentYear = cal.get(Calendar.YEAR);
def currentMonth = cal.get(Calendar.MONTH);
// set the instance to the start of the previous month
if ( currentMonth == 0 ) {
cal.set(currentYear-1, 11, 1);
} else {
cal.set(currentYear, (currentMonth-1), 1);
}
// extract the date, and format to a string
Date previousMonthStart = cal.time;
String previousMonthStartFormatted = previousMonthStart.format('yyyy-MM-dd');
如果您要查找的只是標題中的上一年的開始,那么以下代碼:
import java.time.*
def startOfPreviousYear = LocalDate.now()
.withDayOfMonth(1)
.withMonth(1)
.minusYears(1)
println startOfPreviousYear
def againStartingFromJanuary = LocalDate.of(2021, 1, 15)
.withDayOfMonth(1)
.withMonth(1)
.minusYears(1)
println againStartingFromJanuary
演示了實現此目的的一種方法。 運行時,將打印( now
是今天的 2021.Mar.10 日期):
─➤ groovy solution.groovy
2020-01-01
2020-01-01
評論后更新
您可以通過以下方式獲得上個月和當前月份的結束:
import java.time.*
def endOfPreviousMonth = LocalDate.now()
.withDayOfMonth(1)
.minusDays(1)
def endOfCurrentMonth = LocalDate.now()
.withDayOfMonth(1)
.plusMonths(1)
.minusDays(1)
println "end of last month: ${endOfPreviousMonth}"
println "end of current month: ${endOfCurrentMonth}"
當前日期打印:
end of last month: 2021-02-28
end of current month: 2021-03-31
或者如果我們在一月份:
def endOfPreviousMonth = LocalDate.of(2021, 1, 15)
.withDayOfMonth(1)
.minusDays(1)
def endOfCurrentMonth = LocalDate.of(2021, 1, 15)
.withDayOfMonth(1)
.plusMonths(1)
.minusDays(1)
println "end of last month: ${endOfPreviousMonth}"
println "end of current month: ${endOfCurrentMonth}"
打印:
─➤ groovy solution.groovy
end of last month: 2020-12-31
end of current month: 2021-01-31
一般來說,如果您的目標基於當前日期(如上個月、下個月、三個月前等),則在處理日期時,您應該盡可能避免使用手動日期算法。 使用 java 交給您的 api:s。 日期類處理滾動年份、滾動月份、滾動天數、閏年等,所有這些你真的不想花時間自己解決的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.