我试图比较两个具有不同类型的对象的日期.有没有办法将Calendar对象转换为LocalDater,反之亦然?
谢谢 :)
public class ABC{
public static void main(String args[]){
Calendar c1= Calendar.getInstance();
LocalDate c2= LocalDate.now();
System.out.println(c1.compareTo(c2));
}
}
Run Code Online (Sandbox Code Playgroud) 我必须传递带有时区信息的消息 (jms),例如 (America/Los_Angeles),但我只有国家/地区名称和代码。如果可能的话,用 Java 代码获取时区信息。我在某处读到这个:
System.out.println(TimeZone.getTimeZone("US"));
Run Code Online (Sandbox Code Playgroud)
但它的输出为
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
Run Code Online (Sandbox Code Playgroud)
我期待“美国/洛杉矶”的名单,......
我是 Android 新手,我正在尝试获取当前日期,但 AndroidCalendar类需要 API 24。我需要支持较旧的设备,并且Time自 API 22 以来不推荐使用该类。
问题是如何在 API 23 上获取当前日期,我通过使用java.util.Calendar适用于所有版本的方法解决了这个问题。那么我应该使用什么,Android 日历还是 Java 日历?
请注意,使用 Android 日历时,日、月和年只是整数。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
day =android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.DAY_OF_MONTH);
month = android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.MONTH);
year = android.icu.util.Calendar.getInstance().get(android.icu.util.Calendar.YEAR);
}
else {
day = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_MONTH);
month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
}
Run Code Online (Sandbox Code Playgroud)
仅使用 Java 日历时,无需检查 API 版本
day = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_MONTH);
month = java.util.Calendar.getInstance().get(java.util.Calendar.MONTH);
year = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
Run Code Online (Sandbox Code Playgroud) 对于我只能假设是时区问题,以下代码会在同一天生成不同的一年中的值,但是时间不同:
注意,代码是用Kotlin编写的
例
fun main(args: Array<String>) {
val middaySundayAfterEpoch = Instant.EPOCH + Duration
.ZERO
.plusDays(3)
.plusHours(12)
val almostMidnightSundayAfterEpoch = Instant.EPOCH + Duration
.ZERO
.plusDays(3)
.plusHours(23)
println(getWeekOfYear(middaySundayAfterEpoch))
println(getWeekOfYear(almostMidnightSundayAfterEpoch))
}
fun getWeekOfYear(instant: Instant): Int {
val calendar: Calendar = Calendar.getInstance()
calendar.time = Date.from(instant)
return calendar.get(Calendar.WEEK_OF_YEAR)
}
Run Code Online (Sandbox Code Playgroud)
结果
1
2
假设
题
如何修改此选项以忽略时区,以便两个时间都在同一周内发生?
我收到一个查询参数日期,如yyyy-MM-DD (2022-03-08).
我想将其转换为java.util.Calendar/java.util.GregorianCalendar格式。
所以我的想法是转换:String -> ZonedDateTime -> Calendar。
我做了什么:
ZonedDateTime parsedDate = ZonedDateTime.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//date = 2022-03-08
Run Code Online (Sandbox Code Playgroud)
即使格式正确,我也得到:
Text '2022-03-08' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {},ISO resolved to 2022-03-08 of type java.time.format.Parsed
Run Code Online (Sandbox Code Playgroud)
我发现发生此错误是因为我的字符串没有时区。
一个建议是使用LocalDate
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse(fecha, formatter);
Run Code Online (Sandbox Code Playgroud)
但我不能用作localDate的论据ZonedDateTime.parse()。
我还能尝试什么?
例如:- String fromDate="09/18/2020"; 我希望我的实际 fromDate 是上周六,即 "09/12/2020" 。
另一个例子:- String fromDate="09/01/2020"; 我希望我的实际 fromDate 是上周六,即 "08/29/2020" 。
更多细节我想摆脱一周的特定日子.
我的意思是:{星期六(1),星期日(2),星期一(3),星期二(4),星期三(5),星期四(6),星期五(7)}.
删除周日:{周六(1),周日(2),周一(3),周二(4),周三(5)}.
因此,我可以获得从特定开始日期到现在的排除天数的天数.
提示:我必须使用Java日历
*****问题是动态指定日期
我从日期生成数字,我使用的是Integer.parseInt(myDateNumberString).
我的问题是,如果数字太大,它会给我一个错误.
public Integer currentDate(){
String current_date = new SimpleDateFormat("yyyyMMddHHmm").format(Calendar.getInstance().getTime());
//int _current_date = Integer.parseInt(current_date); // Error, too big number
int _current_date = new BigInteger(current_date).intValue();
return _current_date; // Error, output: -51212897
}
Run Code Online (Sandbox Code Playgroud)
我希望获得价值,201812250203
如果我的日期格式没有mm它是好的,但我需要声明它.
我有三个变量需要使用本年度的年份,即从现在开始的一年之前和从现在开始的两年之前,使用Java。这样的事情会起作用吗?
String DNRCurrentYear = new SimpleDateFormat("yyyy").format(new Date());
Run Code Online (Sandbox Code Playgroud)
还是我需要将年份定int为减去一年然后减去两年?
我将如何获得当年减去一年,当年减去两年?