这个日期和时间片段如何工作?

时间:2016-09-12 02:54:19

标签: java date time date-format simpledateformat

我刚开始参加一个计算机科学课程,我找到了这段代码来获取日期和时间。但我并不完全明白这意味着什么。如果有人能澄清那将是非常棒的! :)

long yourmilliseconds = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");    
Date resultdate = new Date(yourmilliseconds);
System.out.print("Date: ");
System.out.println(sdf.format(resultdate));

3 个答案:

答案 0 :(得分:1)

long yourmilliseconds = System.currentTimeMillis();

从系统中获取毫秒数

Date resultdate = new Date(yourmilliseconds);

从中创建日期。这两行可以改为

Date resultdate = new Date();

由于JDK1.7和之前的日期没有任何内在格式,因此使用格式化类

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");

这是将打印为

的模式

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

现在我们调用格式化方法并将其打印出来。

答案 1 :(得分:0)

可怕的Wombat很好地解释了你的各个步骤,但还有更多的内容。

首先,学习编程是关于使自己的经历。因此,你接近这个问题的第一步是:获取源代码,而不是将其粘贴到SO问题中......将其粘贴到" public static void main"方法;在公共课堂内;编译它,运行它,看看会发生什么。并开始玩它。

如果这让你有疑问,下一步就是查找javadoc - 你看;您的所有代码都处理标准类;他们都很好documented

所以,今天的教训:问这里是好的,但要确保你真的尝试首先自己想出这些东西!不仅因为该网站的政策是这样说的,而且因为这可以为您提供的学习成果!

答案 2 :(得分:0)

java.time

那段代码:

  • 捕获当前时刻(日期时间)
  • 生成一个字符串,以文本方式表示该时刻。

请注意,这是两个截然不同的概念。日期时间对象一个字符串。日期时间对象生成字符串以表示其值。新手程序员经常将两者混为一谈,引起很多困惑和挫折。

不幸的是,代码片段使用了一些旧的遗留日期时间类,现在由java.time类取代。事实证明,旧课程的设计很糟糕,令人困惑,也很麻烦。

捕捉当前时刻的现代方式很简单。 Instant类表示UTC时间轴中的一个时刻,分辨率高达纳秒。

Instant instant = Instant.now();

要生成以标准ISO 8601格式表示该时刻的字符串,只需致电toString

String output = instant.toString();
  

2016-09-12T05:36:55Z

调整到特定时区(ZoneId),通过该区域的挂钟时间镜头观察同一时刻。

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

同样,要生成以标准ISO 8601格式表示该时刻的字符串,只需调用toString即可。实际上,ZonedDateTime通过在方括号中明智地附加时区名称来扩展标准。

String output = zdt.toString();
  

2016-09-12T01:36:55-04:00 [美国/蒙特利尔]

要生成其他格式的字符串,请搜索java.time类DateTimeFormatter的Stack Overflow。