将java.time.temporal.Temporal转换为java.util.Date

时间:2016-10-24 15:10:50

标签: java java-8 java-time

如何将fxml实例转换为import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import java.io.IOException; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws IOException { FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("fxml/Environment.fxml")); Parent root = loader.load(); Scene scene = new Scene(root,800,800); primaryStage.setScene(scene); primaryStage.show(); } } 实例?

java.time.temporal.Temporal

我看过Oracle's legacy time trail documentation,但找不到合适的解决方案。

3 个答案:

答案 0 :(得分:5)

我强烈建议不要提及对(通用)界面java.time.temporal.Temporal的任何引用,只需这样做:

java.util.Date some = java.util.Date.from(Instant.now());

使用界面Temporal几乎就像使用java.lang.Object一样。你应该尽可能具体(特别是在日期和时间的背景下)。甚至JSR-310-API officially outputs a warning

  

此接口是不应该的框架级接口   广泛用于应用程序代码。相反,应用程序应该创建   并传递具体类型的实例,例如LocalDate。那里   有很多原因,其中一部分是实现   此界面可能位于ISO以外的日历系统中。看到   ChronoLocalDate可以更全面地讨论这些问题。

答案 1 :(得分:-1)

在底部有:

  

尽管java.time.format.DateTimeFormatter提供了一种强大的日期和时间值格式化机制,但您也可以使用java.util.Formatter和String.format直接使用基于java.time时间的类。与java.util日期和时间类一起使用的基于模式的格式。

看起来您可能希望使用DateTimeFormatter类,documentation here并且可能会使用类似这样的示例:

LocalDate date = LocalDate.now();
String text = date.format(formatter);
LocalDate parsedDate = LocalDate.parse(text, formatter);

答案 2 :(得分:-1)

我认为你这个问题有点错误。相反,我相信你想要我如何转换任何java.time具体类,例如Instant,LocalDate,使用通用接口进入日期。 TemporalAccessor我相信是界面。

@Test
public void convertTemportalAccessorTypeToDate() throws Exception {
    Instant instant = Instant.now();
    Date expected = Date.from( instant );
    TemporalAccessor now = instant;

    long nanos = now.getLong( ChronoField.NANO_OF_SECOND );
    long epochSeconds = now.getLong( ChronoField.INSTANT_SECONDS );
    Date date1 = Date.from( Instant.ofEpochSecond( epochSeconds, nanos ) );
    assertThat( date1, is( expected ));
}

说,具体类型实际上必须支持ChronoField,如果没有,似乎抛出UnsupportedTemporalTypeException,所以也许包裹在try catch中。