在午夜时间用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