我不得不编辑原始问题,因为我认为很多作者误解了它。
我有最基本的问题。尝试获取系统日期。我的代码就是这个;
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// Instantiate a Date object
Date date = new Date();
// display time and date using toString()
System.out.println(date.toString());
}
}
它给了我错误:令牌“import”上的语法错误,断言期望
解决方案应该非常基础,但我找不到它。
感谢您的帮助。
答案 0 :(得分:1)
你试图做一些不可能的事情。您应该创建一个类,并在此类的方法中,您应该进行这些操作。在下面的示例中,您将在类中的main方法中执行这些操作。主要方法是程序启动的地方。
除了这些要点之外,如果你的类在一个包中,你应该在类的最开始定义它。例如,您的包被称为myPackage
,您应该将其添加到您的代码中,如下所示;
例如,您在包Foo
中创建了一个类myPackage
。
package myPackage;
import java.util.Date;
public class Foo {
public static void main(String args[]) {
// You create a new date object and assign it to the sysdate
Date sysdate = new Date();
// You are now displaying your time and date using toString()
System.out.println(sysdate.toString());
}
}
答案 1 :(得分:1)
Java中的指令不能在课外。所以你的指示
Date sysdate = new Date();
System.out.println(sysdate);
应该在方法中(例如,在main
中),并且必须在类中声明方法。据我所知,import
和package
指令是唯一必须在类定义之前的指令。
另请注意,编写类的文件必须与类的名称相同,例如,示例DateDemo
必须保存在名为DateDemo.java
的文件中。
答案 2 :(得分:0)
关于您的其他答案是正确的,但主要方法未包括正确的类结构。
Date
此外,请勿使用Date
类。它经过精心设计,非常令人困惑和麻烦。现在已被java.time.Instant
类所取代。
要代表UTC中的时刻,请使用Instant
。该类使用的分辨率与nanoseconds一样好。取决于主机milliseconds,主机microseconds和computer clock hardware实现的局限性,当前时刻可能仅用operating system或Java Virtual Machine捕获。
示例代码。
package com.basilbourque.example.telltimeapp ;
import java.time.Instant ;
public class TellTime {
public static void main( String args[] )
{
Instant instant = Instant.now() ; // Capture the current moment in UTC.
String output = instant.toString() ; // Generate text in a `String` object representing the value of the `Instant` object in standard ISO 8601 format.
System.out.println( output ) ; // Dump text to the console.
}
}
让我们变得更加现实。在instance中启动我们的应用程序的the main
method。然后,在该应用程序对象上调用一个方法来使结果滚动。
我们的应用程序知道如何做两件事:
America/Montreal
中告知当前时间。我们的main
方法要求这两个中的第一个。
package com.basilbourque.example.telltimeapp ;
import java.time.Instant ;
public class TellTime {
public static void main( String args[] ) // The `main` method is *not* object-oriented, just a hack, the way we solve the chicken-or-the-egg dilemma] of how to launch an OOP app.
{
TellTime app = new TellTime() ; // Create an instance of our app, an object that represents the entire running app.
app.tellCurrentMomentInUtc() ; // Ask our app object to run some code.
}
public void tellCurrentMomentInUtc()
{
Instant instant = Instant.now() ; // Capture the current moment in UTC.
String output = instant.toString() ; // Generate text in a `String` object representing the value of the `Instant` object in standard ISO 8601 format.
System.out.println( output ) ; // Dump text to the console. 2018-07-02T20:17:49.929677Z
}
public void tellCurrentMomentInMontreal()
{
Instant instant = Instant.now() ; // Capture the current moment in UTC.
ZoneId z = ZoneId.of( "America/Montreal" ) ; // A time zone is a history of the past, present, and future changes to the offset-from-UTC used by the people of a particular region.
ZonedDateTime zdt = instant.atZone( z ) ; // Adjust from UTC to Québec time. Same moment, same point on the timeline, different wall-clock time.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( Locale.CANADA_FRENCH ) ; // Be aware that time zone and locale have *nothing* to do with one another, completely orthogonal issues.
String output = zdt.format( f ) ; // Generate text in a localized format.
System.out.println( output ) ; // Dump text to the console. Example: lundi 2 juillet 2018 à 16:16:59 Eastern Daylight Time
}
}
在发布到Stack Overflow之前,先研究Oracle的Java Tutorials。
java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
目前位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
在哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如Interval
,YearWeek
,YearQuarter
和more。