我是靠谱客的博主 幽默蜜粉,最近开发中收集的这篇文章主要介绍java 给新建一个date,如何在今天午夜和明天午夜创建一个Java Date对象?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

In my code I need to find all my things that happened today. So I need to compare against dates from today at 00:00am (midnight early this morning) to 12:00pm (midnight tonight).

I know ...

Date today = new Date();

... gets me right now. And ...

Date beginning = new Date(0);

... gets me zero time on Jan 1, 1970. But what's an easy way to get zero time today and zero time tomorrow?

Any help is greatly appreciated!

UPDATE; I did this, but surely there's an easier way??

Calendar calStart = new GregorianCalendar();

calStart.setTime(new Date());

calStart.set(Calendar.HOUR_OF_DAY, 0);

calStart.set(Calendar.MINUTE, 0);

calStart.set(Calendar.SECOND, 0);

calStart.set(Calendar.MILLISECOND, 0);

Date midnightYesterday = calStart.getTime();

Calendar calEnd = new GregorianCalendar();

calEnd.setTime(new Date());

calEnd.set(Calendar.DAY_OF_YEAR, calEnd.get(Calendar.DAY_OF_YEAR)+1);

calEnd.set(Calendar.HOUR_OF_DAY, 0);

calEnd.set(Calendar.MINUTE, 0);

calEnd.set(Calendar.SECOND, 0);

calEnd.set(Calendar.MILLISECOND, 0);

Date midnightTonight = calEnd.getTime();

解决方案

java.util.Calendar

// today

Calendar date = new GregorianCalendar();

// reset hour, minutes, seconds and millis

date.set(Calendar.HOUR_OF_DAY, 0);

date.set(Calendar.MINUTE, 0);

date.set(Calendar.SECOND, 0);

date.set(Calendar.MILLISECOND, 0);

// next day

date.add(Calendar.DAY_OF_MONTH, 1);

JDK 8 - java.time.LocalTime and java.time.LocalDate

LocalTime midnight = LocalTime.MIDNIGHT;

LocalDate today = LocalDate.now(ZoneId.of("Europe/Berlin"));

LocalDateTime todayMidnight = LocalDateTime.of(today, midnight);

LocalDateTime tomorrowMidnight = todayMidnight.plusDays(1);

Joda-Time

If you're using a JDK < 8, I recommend Joda Time, because the API is really nice:

DateTime date = new DateTime().toDateMidnight().toDateTime();

DateTime tomorrow = date.plusDays(1);

Since version 2.3 of Joda Time DateMidnight is deprecated, so use this:

DateTime today = new DateTime().withTimeAtStartOfDay();

DateTime tomorrow = today.plusDays(1).withTimeAtStartOfDay();

Pass a time zone if you don't want the JVM’s current default time zone.

DateTimeZone timeZone = DateTimeZone.forID("America/Montreal");

DateTime today = new DateTime(timeZone).withTimeAtStartOfDay(); // Pass time zone to constructor.

最后

以上就是幽默蜜粉为你收集整理的java 给新建一个date,如何在今天午夜和明天午夜创建一个Java Date对象?的全部内容,希望文章能够帮你解决java 给新建一个date,如何在今天午夜和明天午夜创建一个Java Date对象?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部