我正在寻找一种方法来比较LocalDate和ZonedDateTimein的实例js-joda,但这些类不兼容。我愿意接受,这LocalDate是ZonedDateTime时间和时区设置为零的情况。
比较这两个对象的最简单方法是什么?
javascript datetime-comparison zoneddatetime js-joda localdate
我有问题SimpleDateFormat。
SimpleDateFormat dtfmt=new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.getDefault());
Date dt=dtfmt.parse(deptdt);
Run Code Online (Sandbox Code Playgroud)
在 Android 模拟器中工作正常,但在手机中出现此错误:
W/System.err: java.text.ParseException: Unparseable date: "24 Oct 2016 7:31 pm" (at offset 3) W/System.err: at java.text.DateFormat.parse(DateFormat.java:579)
有什么解决办法吗?
这应该是一个非常简单的问题,但我似乎无法理解它。
鉴于我的时区是 EDT (GMT-4),为什么 GMT 的 04:00 变成 23:00 而不是 00:00?
// The offset is -4 hours
let offsetFromGMT = Calendar.current.timeZone.secondsFromGMT() / 60 / 60
// 2017-03-12 04:00
var destinationComponents = DateComponents()
destinationComponents.timeZone = TimeZone(secondsFromGMT: 0)
destinationComponents.year = 2017
destinationComponents.month = 03
destinationComponents.day = 12
destinationComponents.hour = -offsetFromGMT // 4 hours
// Why is this 2017-03-11 23:00 and not 2017-03-12 00:00?
let date = Calendar.current.date(from: destinationComponents)!
// Outputs 23
Calendar.current.dateComponents([.hour], from: date).hour
Run Code Online (Sandbox Code Playgroud) 我正在尝试为列表中的对象创建时间限制。这可能意味着物品的保质期可能为 23、24 或 25 小时。有没有有用的 Java 库?这是我到目前为止所拥有的。
我的问题是,例如,当我在上午 9:30 创建记录时,必须在第二天上午 9:30 将其删除。当夏令时生效期间,我会遇到差异。该记录要么在 8:30 要么 10:30 被删除,具体取决于我是向前还是向后跳。
//baseValue = object that I want to check
Date dt = new Date();
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.DATE, -1);
if(baseValue.getTime() < c.getTime()){
array.remove(baseValue);
}
Run Code Online (Sandbox Code Playgroud) 如何在Java 8中实现以下功能java.time:
DateTime dt = new DateTime(year, month, date, hours, min, sec, milli);
Run Code Online (Sandbox Code Playgroud)
但我找到了这个选项:
OffsetDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset)
Run Code Online (Sandbox Code Playgroud)
但它只有毫秒的方法.
我怎样才能达到与Joda-Time相同的效果?
我知道有类似这样的问题,但我不太能找到与我相似的例子.我了解了LocalDateTime,ZonedDateTime但我不知道怎么告诉我ZonedDateTime假设解析日期的时区.
我正在从Java 7迁移到Java 8.在我的代码中,我有一个这样的方法:
public String changeTZ(String tzFrom, String tzTo, String dateToChange) {
ZoneId zoneFrom = ZoneId.of(tzFrom);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat.toPattern());
LocalDateTime localtDateAndTime = LocalDateTime.parse(dateToChange, formatter);
ZonedDateTime dateAndTimeINeed = ZonedDateTime.of(localtDateAndTime, zoneFrom );
ZonedDateTime rezDate = dateAndTimeINeed.withZoneSameInstant(ZoneId.of(tzTo));
return formatter.format(rezDate);
}
Run Code Online (Sandbox Code Playgroud)
示例用法是:
String rez = changeTZ("CEST", "UTC", "2017-08-10 14:23:58");
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,它以字符串的形式接收日期时间,时区日期是tzFrom变量,而TZ我需要(toTo变量).
在Java 7中执行该操作的代码是荒谬而复杂的,因此我不会在此处进行讨论.你能告诉我如何在不改变方法接口(参数和返回类型)的情况下在Java 8中实现相同的功能吗?DST怎么样?它是在Java 8中自动处理的吗?
请注意,该方法还支持"CEST","CET","UTC"形式的时区以及"欧洲/伦敦"等标准时区.
我的 Java Bean 中有一个字段,如下所示,其中@JsonFormat包含 jackson 注释:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm")
private Timestamp createdOn;
Run Code Online (Sandbox Code Playgroud)
当我返回 时Timestamp,它总是在我的 JSON 响应中转换为 UTC 时间。让我们说格式化我的时间戳,我得到2017-09-13 15:30但我的响应被返回为2017-09-13 10:00.
我知道这是因为 Jackson 注释默认采用 System TimeZone 并将时间戳转换为 UTC。(在我的情况下,服务器属于Asia/Calcutta时区,因此偏移量是+05:30,杰克逊映射器减去 5 小时 30 分钟以将时间戳转换为 UTC)
有没有办法按原样返回时间戳,即,2017-09-13 15:30而不是2017-09-13 10:00?
我已经达到上一季度,如下所示:
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int presentQuarter = (month / 3) + 1;
int lastQuarter = (presentQuarter - 1) > 0 ? presentQuarter - 1 : 4;
Run Code Online (Sandbox Code Playgroud)
我已经得到了,lastQuarter但我将如何得到上一季度的一年.
有人可以帮我这个吗?
在OData/REST服务中,我想允许日期参数,startDate并endDate标记返回数据的日期范围.例:
GET /events?startDate=XXX&endDate=YYY
Run Code Online (Sandbox Code Playgroud)
问题:
我有两个日期字符串,每个字符串位于不同的时区。我认为这些字符串采用“简化”ISO 8601 格式。下面列出了两个示例日期。
2017-08-14T18:41:52.793Z2017-08-14T23:41:52.000Z第一个日期采用 CDT,第二个日期采用 UTC。我相信每个字符串的最后四位数字表示时区。
new Date()奇怪的是,当我为其中每一个设置时,我都通过 报告了不正确的日期console.log()。例如:
const local_date = new Date("2017-08-14T18:41:52.793Z");
const remote_date = new Date("2017-08-14T23:41:52.000Z");
console.log("local_date = " + local_date);
console.log("remote_date = " + remote_date);
Run Code Online (Sandbox Code Playgroud)
输出:
local_date = 2017 年 8 月 14 日星期一 13:41:52 GMT-0500(中部夏令时间)
Remote_date = 2017 年 8 月 14 日星期一 18:41:52 GMT-0500(中部夏令时间)
尽管 CDT 中提供了源日期,但似乎第一个日期被减去了 5 个小时;这就像假设两个日期都是以 UTC 格式提供的。
https://jsfiddle.net/nkax7cjx/1/
我在这里没有错什么?