在Java中获取当前日期/时间的最佳方法是什么?
当前回答
只需尝试以下代码:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CurrentTimeDateCalendar {
public static void getCurrentTimeUsingDate() {
Date date = new Date();
String strDateFormat = "hh:mm:ss a";
DateFormat dateFormat = new SimpleDateFormat(strDateFormat);
String formattedDate= dateFormat.format(date);
System.out.println("Current time of the day using Date - 12 hour format: " + formattedDate);
}
public static void getCurrentTimeUsingCalendar() {
Calendar cal = Calendar.getInstance();
Date date=cal.getTime();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String formattedDate=dateFormat.format(date);
System.out.println("Current time of the day using Calendar - 24 hour format: "+ formattedDate);
}
}
其样本输出为:
使用日期-12小时格式的当前时间:11:13:01 PM使用日历的当前时间-24小时格式:23:13:01
更多信息:
在Java中获取当前日期时间
其他回答
首先了解java.util.Date类
1.1如何获取当前日期
import java.util.Date;
class Demostration{
public static void main(String[]args){
Date date = new Date(); // date object
System.out.println(date); // Try to print the date object
}
}
1.2如何使用getTime()方法
import java.util.Date;
public class Main {
public static void main(String[]args){
Date date = new Date();
long timeInMilliSeconds = date.getTime();
System.out.println(timeInMilliSeconds);
}
}
这将返回自1970年1月1日00:00:00 GMT以来的毫秒数,用于时间比较。
1.3如何使用SimpleDateFormat类设置时间格式
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
class Demostration{
public static void main(String[]args){
Date date=new Date();
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
String formattedDate=dateFormat.format(date);
System.out.println(formattedDate);
}
}
也可以尝试使用不同的格式模式,如“yyyy-MM-dd hh:MM:ss”,并选择所需的模式。http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
了解java.util.Calendar类
2.1使用日历类获取当前时间戳
import java.util.Calendar;
class Demostration{
public static void main(String[]args){
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime());
}
}
2.2尝试使用setTime和其他设置方法将日历设置为不同的日期。
资料来源:http://javau91.blogspot.com/
Java 8或更高版本
LocalDateTime.now() and ZonedDateTime.now()
您可以自己使用Date对象和格式。很难格式化并且需要更多的代码,
Date dateInstance = new Date();
int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
int date = dateInstance.getDate();
int month = dateInstance.getMonth();
int day = dateInstance.getDay();
int hours = dateInstance.getHours();
int min = dateInstance.getMinutes();
int sec = dateInstance.getSeconds();
String dayOfWeek = "";
switch(day){
case 0:
dayOfWeek = "Sunday";
break;
case 1:
dayOfWeek = "Monday";
break;
case 2:
dayOfWeek = "Tuesday";
break;
case 3:
dayOfWeek = "Wednesday";
break;
case 4:
dayOfWeek = "Thursday";
break;
case 5:
dayOfWeek = "Friday";
break;
case 6:
dayOfWeek = "Saturday";
break;
}
System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
System.out.println("Time: " + hours +":"+ min + ":" + sec);
输出:
Date: 2017-6-23 Sunday
Time: 14:6:20
正如您所看到的,这是最糟糕的方法,根据oracle文档,它已被弃用。
Oracle文档:
类Date表示特定的时间瞬间,以毫秒为单位精确在JDK1.1之前,Date类有两个额外的函数。它允许将日期解释为年、月、日、小时、分钟、,和第二值。它还允许格式化和解析日期串。不幸的是,这些函数的API不适用国际化。从JDK1.1开始,Calendar类应该是用于在日期和时间字段与DateFormat类之间转换应用于格式化和解析日期字符串。相应的Date中的方法已弃用。
因此,您也可以使用Calendar类,
Calendar.YEAR;
//and lot more
要获取当前时间,可以使用:
Calendar rightNow = Calendar.getInstance();
文件:与其他区域设置敏感类一样,Calendar提供了一个类方法,getInstance,用于获取此类型的通常有用的对象。Calendar的getInstance方法返回其日历字段已用当前日期和时间初始化
以下代码用于获取唯一日期
Date rightNow = Calendar.getInstance().getTime();
System.out.println(rightNow);
此外,Calendar类具有子类。GregorianCalendar是其中之一,也是日历的具体子类,它提供了世界上大多数人使用的标准日历系统。
使用GregorianLendar的示例:
Calendar cal = new GregorianCalendar();
int hours = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int ap = cal.get(Calendar.AM_PM);
String amVSpm;
if(ap == 0){
amVSpm = "AM";
}else{
amVSpm = "PM";
}
String timer = hours + "-" + minute + "-" + second + " " +amVSpm;
System.out.println(timer);
您可以使用SimpleDateFormat,一种简单快速的日期格式设置方法:
String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String date = simpleDateFormat.format(new Date());
System.out.println(date);
阅读Jakob Jenkov教程:Java SimpleDateFormat。
正如其他人提到的,当我们需要从日期进行操作时,我们没有简单而最佳的方法,或者我们无法满足内置类、API的要求。
例如,当我们需要在两个日期之间进行比较时,当我们要比较两个日期时(也有内置的方法),等等。我们不得不使用第三方图书馆。其中一个好的和受欢迎的是Joda Time。
另请阅读:
如何在Joda time中正确获取当前日期和时间?JodaTime-如何获取UTC的当前时间JodaTime示例。下载Joda
.最开心的事情是现在(在java8中),没有人因为任何原因需要下载和使用库。一个在Java 8中获取当前日期和时间的简单示例,
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//with time zone
LocalTime localTimeWtZone = LocalTime.now(ZoneId.of("GMT+02:30"));
System.out.println(localTimeWtZone);
一篇关于Java8日期的好博文。
记住要了解更多关于Java日期和时间的信息,因为有很多方法和/或有用的方法可以获取/使用。
日期和时间的Oracle教程。Oracle格式化程序教程。课:标准日历。
编辑:
根据@BasilBourque的评论,像java.util.date、java.util.Calendar和java.text.SimpleTextFormat这样麻烦的旧日期时间类现在已经过时,取而代之的是java.time类。
如果希望当前日期为字符串,请尝试以下操作:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
or
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
http://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/
(注意:仅适用于Java版本<8。对于Java 8+,请检查其他回复。)
如果您只需要输出格式为YYYY.MM.DD-HH.MM.SS(非常常见的情况)的时间戳,那么下面是方法:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
推荐文章
- 转换列表的最佳方法:map还是foreach?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 使用String.split()和多个分隔符
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- Swing和AWT的区别是什么?
- 为什么Java流是一次性的?
- 四舍五入BigDecimal *总是*有两位小数点后
- 新DateTime()与默认值(DateTime)
- 设计模式:工厂vs工厂方法vs抽象工厂