Ste*_*n C 631
这取决于您想要的日期/时间形式:
如果您希望将日期/时间作为单个数值,System.currentTimeMillis()
则为您提供,表示为UNIX纪元(作为Java long
)之后的毫秒数.此值是UTC时间点的增量,并且与本地时区无关...假设系统时钟已正确设置.
如果您希望表单中的日期/时间允许您以数字方式访问组件(年,月等),则可以使用以下方法之一:
new Date()
为您提供一个Date
使用当前日期/时间初始化的对象.问题是Date
API方法大多存在缺陷......并且已弃用.
Calendar.getInstance()
Calendar
使用默认值Locale
和TimeZone
.为您提供使用当前日期/时间初始化的对象.其他重载允许您使用特定Locale
和/或TimeZone
.日历工作......但API仍然很麻烦.
new org.joda.time.DateTime()
使用默认时区和年表,为您提供使用当前日期/时间初始化的Joda-time对象.还有很多其他的Joda替代品......这里描述的太多了.(但请注意,有些人报告说Joda时间有性能问题.例如,Jodatime的LocalDateTime在第一次使用时速度很慢.)
在Java中8,呼吁LocalDateTime.now()
并ZonedDateTime.now()
会给你申述1当前日期/时间.
在Java 8之前,大多数了解这些事情的人都建议Joda-time拥有(到目前为止)用于处理涉及时间点和持续时间计算的最佳Java API.使用Java 8,这已不再适用.但是,如果您已经在代码库中使用Joda时间,则没有强大的2个迁移原因.
1 - 请注意,LocalDateTime不包含时区.正如javadoc所说:"它不能代表时间线上的瞬间,没有附加信息,如偏移或时区."
2 - 如果不这样做,您的代码将不会中断,并且您不会收到弃用警告.当然,Joda代码库可能会停止获取更新,但它不太可能需要它们.没有更新意味着稳定性,这是一个很好的事情.另请注意,如果有人能够解决Java平台中的回归导致的问题,那很有可能.
Lie*_*rad 394
如果您只需要输出YYYY.MM.DD-HH.MM.SS格式的时间戳(非常频繁的情况),那么这就是这样做的方法:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
Run Code Online (Sandbox Code Playgroud)
dug*_*ggu 101
如果您希望当前日期为String,请尝试以下操作:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
Run Code Online (Sandbox Code Playgroud)
要么
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
Run Code Online (Sandbox Code Playgroud)
http://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/
Ole*_*eev 71
在Java 8中它是:
LocalDateTime.now()
Run Code Online (Sandbox Code Playgroud)
如果您需要时区信息:
ZonedDateTime.now()
Run Code Online (Sandbox Code Playgroud)
如果你想打印花哨的格式化字符串:
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))
Run Code Online (Sandbox Code Playgroud)
Ami*_*ani 45
只需创建一个Date对象......
Date date = new Date();
Run Code Online (Sandbox Code Playgroud)
Bas*_*que 44
Instant.now() // Capture the current moment in UTC, with a resolution of nanoseconds. Returns a `Instant` object.
Run Code Online (Sandbox Code Playgroud)
… 要么 …
ZonedDateTime.now( // Capture the current moment as seen in…
ZoneId.of( "America/Montreal" ) // … the wall-clock time used by the people of a particular region (a time zone).
) // Returns a `ZonedDateTime` object.
Run Code Online (Sandbox Code Playgroud)
一些答案提到java.time类是与最早版本的Java捆绑在一起的麻烦的旧遗留日期时间类的现代替代品.以下是更多信息.
其他答案无法解释时区对于确定当前日期和时间至关重要.对于任何给定的时刻,日期和时间在全球范围内因地区而异.例如,午夜过后几分钟是巴黎法国新的一天,而在魁北克蒙特利尔仍然是"昨天" .
Instant
作为最佳实践,您的大部分业务逻辑和数据存储/交换应以UTC格式完成.要以UTC为单位以分辨率(以纳秒为单位)获取当前时刻,请使用Instant
class.
Instant instant = Instant.now();
Run Code Online (Sandbox Code Playgroud)
ZonedDateTime
您可以将其调整Instant
到其他时区.应用一个ZoneId
对象来获得一个ZonedDateTime
.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
Run Code Online (Sandbox Code Playgroud)
我们可以跳过Instant
并ZonedDateTime
直接获取当前信息.
ZonedDateTime zdt = ZonedDateTime.now( z );
Run Code Online (Sandbox Code Playgroud)
始终传递可选的时区参数.如果省略,则应用JVM的当前默认时区.默认可以改变任何,甚至时刻,在运行时.不要让您的应用受到外部因素的影响.始终指定所需/预期的时区.
ZonedDateTime do_Not_Do_This = ZonedDateTime.now(); // BAD - Never rely implicitly on the current default time zone.
Run Code Online (Sandbox Code Playgroud)
您可以稍后提取Instant
从ZonedDateTime
.
Instant instant = zdt.toInstant();
Run Code Online (Sandbox Code Playgroud)
始终使用Instant
或ZonedDateTime
,而不是LocalDateTime
当你想在时间轴上的实际的时刻.这些Local…
类型故意没有时区概念,所以它们只代表一个可能时刻的粗略概念.要获得实际时刻,您必须指定一个时区来将Local…
类型转换为a ZonedDateTime
,从而使其有意义.
LocalDate
该LocalDate
级表示没有时间一天和不同时区的日期,唯一的价值.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z ); // Always pass a time zone.
Run Code Online (Sandbox Code Playgroud)
要生成表示日期时间值的String,只需调用toString
标准ISO 8601格式的java.time类.
String output = myLocalDate.toString(); // 2016-09-23
Run Code Online (Sandbox Code Playgroud)
… 要么 …
String output = zdt.toString(); // 2016-09-23T12:34:56.789+03:00[America/Montreal]
Run Code Online (Sandbox Code Playgroud)
该ZonedDateTime
班通过明智地附加在方括号中的时区的名称,扩展了标准格式.
对于其他格式,请在DateTimeFormatter
课堂上搜索Stack Overflow以获取许多问题和答案.
LocalDateTime
相反,由RamanSB问题的评论,你应该不使用LocalDateTime
类的当前日期与时间.
该LocalDateTime
故意没有任何时区或偏移从-UTC的信息.那么,这是不是当您在跟踪的时间轴上一个特定的时刻合适.当然不适合捕捉当前时刻.
"本地"措辞是违反直觉的.它意味着任何地方而不是任何一个特定的地方.例如,圣诞节今年12月25日午夜开始:LocalDateTime
表示为a 2017-12-25T00:00:00
.但这意味着在不同时间在全球不同地点的午夜.午夜首先发生在基里巴斯,后来发生在新西兰,几个小时后发生在印度,依此类推,在法国圣诞节开始之前还有几个小时过去,那时加拿大的孩子们仍在等待那一天.这些圣诞节起点中的每一个都将表示为单独的LocalDateTime
.
如果您不能信任您的系统时钟,请参阅Java:从服务器获取当前日期和时间而不是系统时钟和我的答案.
ZonedDateTime
要利用当前时刻的备用供应商,请编写抽象java.time.Clock
类的子类.
您可以将java.time.Clock
实现作为参数传递给各种java.time方法.例如,Clock
.
Instant instant = Instant.now( yourClockGoesHere ) ;
Run Code Online (Sandbox Code Playgroud)
出于测试目的,注意的可选的实施方式Instant.now( clock )
从现有的静态Clock
本身:Clock
,fixed
,offset
,和更多.
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如tick
,java.util.Date
,和Calendar
.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC驱动程序.不需要字符串,不需要课程.SimpleDateFormat
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类java.sql.*
,Interval
,YearWeek
,和更多.
blu*_*xff 41
// 2015/09/27 15:07:53
System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 15:07:53
System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) );
// 09/28/2015
System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime()));
// 20150928_161823
System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) );
// Mon Sep 28 16:24:28 CEST 2015
System.out.println( Calendar.getInstance().getTime() );
// Mon Sep 28 16:24:51 CEST 2015
System.out.println( new Date(System.currentTimeMillis()) );
// Mon Sep 28
System.out.println( new Date().toString().substring(0, 10) );
// 2015-09-28
System.out.println( new java.sql.Date(System.currentTimeMillis()) );
// 14:32:26
Date d = new Date();
System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 );
// 2015-09-28 17:12:35.584
System.out.println( new Timestamp(System.currentTimeMillis()) );
// Java 8
// 2015-09-28T16:16:23.308+02:00[Europe/Belgrade]
System.out.println( ZonedDateTime.now() );
// Mon, 28 Sep 2015 16:16:23 +0200
System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) );
// 2015-09-28
System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class
// 16
System.out.println( LocalTime.now().getHour() );
// 2015-09-28T16:16:23.315
System.out.println( LocalDateTime.now() );
Run Code Online (Sandbox Code Playgroud)
小智 18
使用:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
System.out.println(timeStamp );
Run Code Online (Sandbox Code Playgroud)
(它正在工作.)
Sub*_*odh 10
创建日期对象,然后将其打印下来.
Date d = new Date(System.currentTimeMillis());
System.out.print(d);
Run Code Online (Sandbox Code Playgroud)
与上述解决方案类似.但我总是发现自己正在寻找这段代码:
Date date=Calendar.getInstance().getTime();
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
你看过java.util.Date了吗?这正是你想要的.
小智 7
1st了解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
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这将返回自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);
}
}
Run Code Online (Sandbox Code Playgroud)
还可以尝试使用不同的格式模式,如"yyyy-MM-dd hh:mm:ss"并选择所需的模式.http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
2nd了解java.util.Calendar类
2.1使用Calendar Class获取当前时间戳
import java.util.Calendar;
class Demostration{
public static void main(String[]args){
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime());
}
}
Run Code Online (Sandbox Code Playgroud)
2.2尝试使用setTime和其他设置方法将日历设置为不同的日期.
资料来源:http://javau91.blogspot.com/
对于java.util.Date,只需创建一个新的Date()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43
Run Code Online (Sandbox Code Playgroud)
对于java.util.Calendar,使用Calendar.getInstance()
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43
Run Code Online (Sandbox Code Playgroud)
对于java.time.LocalDateTime,使用LocalDateTime.now()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now)); //2016/11/16 12:08:43
Run Code Online (Sandbox Code Playgroud)
对于java.time.LocalDate,使用LocalDate.now()
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate)); //2016/11/16
Run Code Online (Sandbox Code Playgroud)
参考:https://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/
小智 7
Java 8 或以上
LocalDateTime.now() and ZonedDateTime.now()
Run Code Online (Sandbox Code Playgroud)
我觉得这是最好的方法:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1637957 次 |
最近记录: |