相关疑难解决方法(0)

如何将Instant转换为LocalTime?

即使在阅读了大量教程之后,我也不是真正了解Temporal Adjusters或Java的新时间库.

如何将Instant对象转换为LocalTime对象.我正在思考以下几点:

LocalTime time = LocalTime.of(
        instantStart.get(ChronoField.HOUR_OF_DAY),
        instantStart.get(ChronoField.MINUTE_OF_HOUR)
    );
Run Code Online (Sandbox Code Playgroud)

但它没有用.我该怎么做?

java datetime java-8

14
推荐指数
1
解决办法
9954
查看次数

在Java 8中比较日期和LocalDateTime

我正在使用Java 8并查询正在返回java.util.Date对象的Mongo数据库.我现在想检查该项目是否在过去30天内.我正在尝试使用新的时间API来使代码更新到更新.

所以我写了这段代码:

java.time.LocalDateTime aMonthAgo = LocalDateTime.now().minusDays(30)
Run Code Online (Sandbox Code Playgroud)

我有一个

java.util.Date dbDate = item.get("t")
Run Code Online (Sandbox Code Playgroud)

我如何比较这两个?

我确信我可以完全使用Dates/Calendars来完成这项工作,或者介绍joda-time.但我更愿意选择更好的Java 8解决方案.

java

13
推荐指数
1
解决办法
3万
查看次数

如何在Java 8中将LocalDateTime转换为Date

我默认使用时区巴西,但是当捕获到纽约的一个LocalDateTime并转换为java.tim.Instant时,即时填充正确.问题是当我尝试使用Date.from(instantValue)生成一个Date,而不是生成纽约的日期时,我最终得到了来自巴西的当前日期.

ZoneId nyZone = ZoneId.of("America/New_York");
ZoneId brazilZone = ZoneId.of("America/Recife");

LocalDateTime ldtBrazil = LocalDateTime.now(brazilZone);
LocalDateTime ldtNY = LocalDateTime.now(nyZone);

Instant instantBrazil = ldtBrazil.toInstant(ZoneOffset.UTC);
Instant instantNY = ldtNY.toInstant(ZoneOffset.UTC);

System.out.println("-------LocalDateTime-------");
System.out.println("ldtBrazil    : "+ldtBrazil);
System.out.println("ldtNY        : "+ldtNY);

System.out.println("\n-------Instant-------");
System.out.println("instantBrazil: "+instantBrazil);
System.out.println("instantNY    : "+instantNY);

long milliBrazil = instantBrazil.toEpochMilli();
long milliNY = instantNY.toEpochMilli();

System.out.println("\n----------Milli----------");
System.out.println("miliBrazil : "+milliBrazil);
System.out.println("miliNY     : "+milliNY);

Date dateBrazil = Date.from(instantBrazil);
Date dateNY = Date.from(instantNY);

System.out.println("\n---------Date From Instant---------");
System.out.println("dateBrazil: "+dateBrazil);
System.out.println("dateNY    : "+dateNY);

System.out.println("\n---------Date …
Run Code Online (Sandbox Code Playgroud)

java time date java-8

10
推荐指数
2
解决办法
2万
查看次数

如何将LocalDateTime转换为GregorianCalendar?

如果无法解析简单的日期时间,为什么可以将LocalDateTime对象传递给ZonedDateTime.from()方法,如下所示?

@Test
public void test() throws Exception {
    GregorianCalendar.from(ZonedDateTime.from(LocalDateTime.parse("2016-08-31T23:00:59")));
}
Run Code Online (Sandbox Code Playgroud)

结果:

java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: 2016-08-31T23:00:59 of type java.time.LocalDateTime
    at java.time.ZonedDateTime.from(ZonedDateTime.java:565)
Run Code Online (Sandbox Code Playgroud)

java java-time

9
推荐指数
2
解决办法
1万
查看次数

DateTimeFormatter到DateFormat的转换

如何将DateTimeFormatter转换为DateFormat?我想将DateTimeFormatter转换为DateFormat吗?可能吗 ?

我有一个DateTimeFormatter对象,我想将其传递给其参数仅接受DateFormat的方法。

java date

6
推荐指数
1
解决办法
2441
查看次数

JodaTime或Java 8是否有特殊支持JD Edwards日期和时间?

手头的主题是一个混乱的特定于域的问题,与Oracle的ERP软件JD Edwards中的日期一起使用.其详细信息记录在这个问题中.

在编写用于处理JD Edwards的日期和时间的包装类之前,我想知道JodaTime或Java 8是否为这种独特的时间格式引入了任何特殊支持,或者我是否必须进行重要的字符串操作,无论我使用哪些库.

这是一个模糊的问题,所以请仅在您具备此问题的特定知识和/或JodaTime/Java 8/JSR 310时才做出响应.

附加:根据Basil Bourque的要求,添加伴随上述日期的时间戳示例.以下是来自不同表的日期/时间字段的两个示例:

JCSBMDATE:115100,JCSBMTIME:120102.0

RLUPMJ:114317,RLUPMT:141805.0

此外,日期变量被转换为BigDecimal,时间是Double.所以,我可能会保留字符串解析器,但也可以编写本地采用BigDecimal/Double值的工厂方法.

似乎时间字段实际上是从一天开始的毫秒数(不是秒数),并且可以忽略".0".因此,必须执行转换和计算,如下所示:

localDate.atTime(LocalTime.ofNanoOfDay(Long.parseLong(jdeTime)*1000000))

oracle jdedwards jodatime java-8

5
推荐指数
1
解决办法
464
查看次数

添加java时间对象

How do you say,从calendar.getTime添加1小时给定的结果?

java time datetime

4
推荐指数
1
解决办法
625
查看次数

现在是ISO 8601日期时间

我需要在C#中使用的那种格式 DateTime.Now.ToString("o").样品返回日期DateTime.Now.ToString("o")

2016-03-10T11:24:59.7862749 + 04:00

然后在sql中插入为

2016-03-10 11:24:59.786

我正在尝试从java插入相同的日期格式.我用它:

TimeZone tz = TimeZone.getTimeZone("UTC");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ");
df.setTimeZone(tz);
String nowAsISO = df.format(new Date());
Run Code Online (Sandbox Code Playgroud)

它会返回这个

2016-03-10T07:29 + 0000

由于这种格式,它出错了.如何将格式更改为我想要的格式?

c# java datetime date

1
推荐指数
1
解决办法
6159
查看次数

以原始时区打印日期

假设我的设备在澳大利亚(GMT + 10:00)。

我有一个从API收到的日期“ 2016-04-22T17:45:00 + 02:00”。

我想在原始时区(GMT + 02:00)很好地显示它。

因此,我将SimpleDateFormat与“ yyyy-MM-dd'T'HH:mm:ssZZZZZ”一起使用。

String date = "2016-04-22T17:45:00+02:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));
Run Code Online (Sandbox Code Playgroud)

但是不幸的是,我找不到一种显示日期的干净方法:

sdf.format(cal.getTime());
Run Code Online (Sandbox Code Playgroud)

使用设备时区。

因此,我“手动”解析了日期以提取时区以将其设置在日历中。

cal.setTimeZone(TimeZone.getTimeZone("GMT" + date.substring(date.length() - 6, date.length())));
Run Code Online (Sandbox Code Playgroud)

但这似乎并不能解决问题。

我怎样才能做到这一点?

java android date simpledateformat timestamp-with-timezone

1
推荐指数
1
解决办法
2018
查看次数