在Java中获取当前日期/时间的最佳方法是什么?


当前回答

如前所述,基本的Date()可以根据需要获取当前时间。在我最近大量使用Java Date的经验中,内置类有很多奇怪之处(以及许多Date类方法的弃用)。我觉得有一个奇怪的地方是,月份是基于0指数的,从技术角度来看,这是合理的,但实际情况可能非常令人困惑。

如果你只关心当前的日期,那就足够了——然而,如果你打算用日期进行大量的操作/计算,那么使用第三方库可能会非常有益(因为很多Java开发人员对内置功能不满意,所以有很多这样的库)。

我支持Stephen C的建议,因为我发现Joda time对简化我的日期工作非常有用,它也有很好的文档记录,你可以在整个网站上找到许多有用的例子。我甚至最终编写了一个静态包装类(作为DateUtils),我使用它来合并和简化所有常见的日期操作。

其他回答

在Java 8中,它是:

LocalDateTime.now()

如果您需要时区信息:

ZonedDateTime.now()

如果您想打印花式格式化字符串:

System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))

首先了解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/

创建日期对象并将其打印下来。

Date d = new Date(System.currentTimeMillis());
System.out.print(d);

与上述解决方案类似。但我总是发现自己在寻找这段代码:

Date date=Calendar.getInstance().getTime();
System.out.println(date);

只需尝试以下代码:

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中获取当前日期时间