gpt4 book ai didi

java - 是否可以通过在java中传递日期名称来查找日期编号?

转载 作者:行者123 更新时间:2023-11-30 02:08:30 24 4
gpt4 key购买 nike

我试图通过传递诸如星期一或星期二之类的日期名称来找出日期编号,例如1或2或3,因为日期编号可能会根据系统日历而变化(某些日历星期日将会是某个星期一的开始日)。

我需要通过传递这些天的索引和周数来找出星期一、星期五或星期日的日期。

我可以根据日期找出周数,但要传递日数(或索引),我需要根据本地系统找出确切的索引。

请问可以吗?

import java.time.LocalDateTime;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class HelloWorld{

public static void main(String []args){

String str = "2018-06-08 12:34:21";
int sDate, eDate;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime assignedDateTime = LocalDateTime.parse(str, formatter);
//LocalDate assignedDate = assignedDateTime.toLocalDate();
Instant instant = assignedDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date dateFromOld = Date.from(instant);

Calendar calendar = new GregorianCalendar();
calendar.setTime(dateFromOld);

int weekNumber = calendar.get(calendar.WEEK_OF_MONTH);
int dayofWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(assignedDateTime);
System.out.println(dateFromOld);
System.out.println(weekNumber);
System.out.println(dayofWeek);
}
}

这是我编写的代码,从中我可以找到所需日期的周数、天数。

但是,我想通过传递日期名称来找出日期编号,但我没有找到任何方法。有一些逻辑可以找出这一点,例如编写枚举函数,但在某些情况下该逻辑也会失败,例如系统的起始日与我们的枚举函数不同。

我希望现在一切都清楚了。

最佳答案

我的第一个例子是法国。法国使用国际标准(ISO),其中星期一是一周的第一天,星期二是第二天,依此类推。要查找数字,我们首先需要解析星期几的名称。接下来,适当的 WeekFields 对象可以为我们提供一个字段,我们可以使用该字段来查询星期几及其在一周中的编号。

    DateTimeFormatter dayOfWeekFormatter
= DateTimeFormatter.ofPattern("EEEE", Locale.ENGLISH);

Locale loc = Locale.FRANCE;
WeekFields wf = WeekFields.of(loc);

String dayName = "Tuesday";
DayOfWeek day = DayOfWeek.from(dayOfWeekFormatter.parse(dayName));
int dayNumber = day.get(wf.dayOfWeek());
System.out.println(dayName + " has number " + dayNumber);

输出:

Tuesday has number 2

这正如预期的那样。另一个例子是美国。美国的周从星期日开始,因此星期二应该是一周的第三天。我们使用美国语言环境:

    Locale loc = Locale.US;

我的代码的其余部分是相同的,但现在的输出是:

Tuesday has number 3

WeekFields 类有时使用起来有点棘手,但如果您能找到如何使用它,它几乎总能在国际、美国和其他周计划中为您提供您想要的东西。

关于java - 是否可以通过在java中传递日期名称来查找日期编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50760201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com