java在业务处获取当前时间_在午夜时间用Java获取今天的日期

在午夜时间用Java获取今天的日期

我需要创建两个日期对象。 如果当前日期和时间是2012年3月9日上午11:30,则

日期对象d1应该是2012年3月9日上午12:00

日期对象d2应该包含当前日期本身

日期不会输入,它是系统日期。

更新:

Date dt = new Date();

System.out.print(dt.toString());

给出当前日期和时间

Akhil K Nambiar asked 2020-01-17T02:31:04Z

12个解决方案

58 votes

Calendar c = new GregorianCalendar();

c.set(Calendar.HOUR_OF_DAY, 0); //anything 0 - 23

c.set(Calendar.MINUTE, 0);

c.set(Calendar.SECOND, 0);

Date d1 = c.getTime(); //the midnight, that's the first second of the day.

应该是IST 2012年3月9日00:00:00

Nishant answered 2020-01-17T02:31:12Z

33 votes

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");

System.out.println(sdf.format(date));

yen1k answered 2020-01-17T02:31:28Z

15 votes

这是使用新的java.time包(教程)的基于Java 8的解决方案。

如果可以在代码中使用Java 8对象,请使用LocalDateTime:

LocalDateTime now = LocalDateTime.now(); // current date and time

LocalDateTime midnight = now.toLocalDate().atStartOfDay();

如果您需要旧日期,即java.time:

使用以下转换将上面创建的java.time转换为java.util:

java.time-> java.time-> java.time-> java.time

调用具有指定时区的java.time(或系统默认时区的java.time)创建java.time对象,并根据需要调整DST。

java.time

致电java.time,将java.time转换为java.util:

java.time

最后,致电java.time,将java.time转换为java.util:

java.time

总而言之,它看起来与您相似:

LocalDateTime now = LocalDateTime.now(); // current date and time

LocalDateTime midnight = now.toLocalDate().atStartOfDay();

Date d1 = Date.from(midnight.atZone(ZoneId.systemDefault()).toInstant());

Date d2 = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());

另请参见旧版日期时间代码(Java™教程)部分,以了解新的java.time功能与旧的java.util类的互操作性。

Jens Hoffmann answered 2020-01-17T02:32:41Z

10 votes

Calendar currentDate = Calendar.getInstance(); //Get the current date

SimpleDateFormat formatter= new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss"); //format it as per your requirement

String dateNow = formatter.format(currentDate.getTime());

System.out.println("Now the date is :=> " + dateNow);

Chandra Sekhar answered 2020-01-17T02:32:57Z

4 votes

如果能够将外部库添加到项目中。 我建议您尝试Joda-time。 它具有处理日期的非常聪明的方式。

[http://joda-time.sourceforge.net/]

heldt answered 2020-01-17T02:33:21Z

4 votes

对于当前日期和时间:

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

显示为:

2013年2月5日,下午12:40:24

The Holy Coder answered 2020-01-17T02:33:50Z

2 votes

使用org.apache.commons.lang3.time.DateUtils

Date pDate = new Date();

DateUtils.truncate(pDate, Calendar.DAY_OF_MONTH);

TheBakker answered 2020-01-17T02:34:10Z

2 votes

Java 8中的解决方案:

Date startOfToday = Date.from(ZonedDateTime.now().with(LocalTime.MIN).toInstant());

Lukasz Wiktor answered 2020-01-17T02:34:29Z

1 votes

private static Date truncateTime(Calendar cal) {

cal.set(Calendar.HOUR_OF_DAY, 0);

cal.set(Calendar.MINUTE, 0);

cal.set(Calendar.SECOND, 0);

cal.set(Calendar.MILLISECOND, 0);

return new Date(cal.getTime().getTime());

}

public static void main(String[] args) throws Exception{

Date d2 = new Date();

GregorianCalendar cal = new GregorianCalendar();

cal.setTime(d2);

Date d1 = truncateTime( cal );

System.out.println(d1.toString());

System.out.println(d2.toString());

}

JRR answered 2020-01-17T02:34:45Z

1 votes

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

Date date = new Date(); System.out.println(dateFormat.format(date)); //2014/08/06 15:59:4

user4643457 answered 2020-01-17T02:35:01Z

1 votes

这是一种以毫秒为单位获取UTC Midnight的Java 8方法

ZonedDateTime utcTime = ZonedDateTime.now(ZoneOffset.UTC);

long todayMidnight = utcTime.toLocalDate().atStartOfDay().toEpochSecond(ZoneOffset.UTC) * 1000;

Ashutosh Srivastav answered 2020-01-17T02:35:21Z

0 votes

定义“午夜”

“午夜”一词很难定义。

有人认为这是新的一天开始之前的时刻。 试图用软件来表示这一点,就像一天的最后时刻一样,总是可以将其细分为一秒钟的一小部分。

我建议对此进行思考的一种更好的方法是获得“一天的第一刻”。

这支持将时间跨度定义为“半开放”的常用方法,其中开始是包含在内的,而结束是排除的。 因此,一整天从一天的第一刻开始,一直到(但不包括)第二天的第一刻为止。 需要一整天(请注意日期从3号到4号):

2016-02-03T00:00:00.0-08:00 [美国/洛杉矶] /2016-02-04T00:00:00.0-08:00 [美国/洛杉矶]

乔达时代

如果使用Joda-Time库,请致电withTimeAtStartOfDay。

请注意我们如何指定时区。 如果省略,则会隐式应用JVM的当前默认时区。 最好明确一点。

DateTime todayStart = DateTime.now( DateTimeZone.forID( "America/Montreal" ) ).withTimeAtStartOfDay() ;

如果使用Java 8或更高版本,最好使用Java内置的java.time包。 请参阅Jens Hoffman的同级答案。

Basil Bourque answered 2020-01-17T02:36:21Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值