如何在java中保存和加载当前时间?

时间:2014-03-10 19:05:53

标签: java time load save

我需要能够在java中保存并加载当前时间。我可以使用System.currentTimeMillis()来存储它,但我也需要能够以不同的格式写出来,比如; “yyyy-mm-dd”,“dd / mm hour:min:sec”等。

该程序将节省从System.currentTimeMillis()到txt文件的时间,因此即使计算机或程序出现问题,它也需要能够直接回到它的任务中。

4 个答案:

答案 0 :(得分:1)

存储从System.currentTimeMillis()返回的长值并使用Date date=new Date(long value);

加载

您可以使用Calendar类或SimpleDateFormat,如下面的代码所示:

import java.text.SimpleDateFormat;
import java.util.Calendar;

Calendar cal=Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());

SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(format.format(cal.getTime()));

详细了解Date formatting using SimpleDateFormat

答案 1 :(得分:1)

TL;博士

序列化

序列化为文字:

java.time.Instant.now().toString()
  

2018-01-01T01:23:45.123456789Z

从文字中实例化:

Instant.parse( “2018-01-01T01:23:45.123456789Z” )

格式化字符串

调整为时区:

instant.atZone( ZoneId.of( “Africa/Tunis” ) )  // Instantiate a `ZonedDateTime` object 

以其他格式生成字符串:

DateTimeFormatter.ofPattern( … )

...或者,更好:

DateTimeFormatter.ofLocalized…

...然后:

myZonedDateTime.format( formatter )

跟踪日期 - 时间值,而不是毫秒

一般来说,按照毫秒以来的时间跟踪日期时间值是一项棘手的工作,应该避免。当人类阅读时,这些价值观毫无意义。不同的软件使用不同的数字(秒与毫秒相对于纳秒)。不同的软件使用不同的epochs(并不总是你可能期望的1970年初)。按日期时间值跟踪毫秒,例如尝试按位跟踪文本,而不是使用 String FileReader FileWriter 对象。我们有很好的日期时间库,所以请使用它们。

Joda-Time | java.time

通过良好的日期时间库,我指的是Joda-Time或Java 8中的新java.time包。避免使用较旧的捆绑类java.util.Date& .Calendar,因为它们非常麻烦。

要开始使用Joda-Time,请尝试:

System.out.println( DateTime.now() );

然后在StackOverflow中搜索“joda”或“joda date”。

ISO 8601

将日期时间值序列化为文本存储时,请使用YYYY-MM-DDTHH-MM-SS.sss+00:00格式2014-03-11T23:54:15+01:00,例如2014-03-11T22:54:15Z2014-03-11T15:54:15+08:00[America/Los_Angeles]。这种格式是明确的。这种格式在各种文化中都很直观。按字母顺序排序的值也按时间顺序排序。

Joda-Time库默认使用ISO 8601格式。类似地,Java 8中的java.time包(受Joda-Time启发,由JSR 310定义)也使用ISO 8601,但通过在括号中附加时区的正确名称(例如{{1}})来扩展该格式。 p>

答案 2 :(得分:0)

您可以使用类似于以下内容的代码

String formatted = new SimpleDateFormat("yyyy-mm-dd").format(new Date(System.currentTimeMillis()));

答案 3 :(得分:0)

你需要日期 http://docs.oracle.com/javase/7/docs/api/java/util/Date.html 而对于格式化,您需要SimpleDateFormat

Date date = GregorianCalendar.getInstance().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
System.out.println(sdf.format(date));

您可以使用文本文件,也可以使用ObjectOutputStream,因为Date是Serializable。