我需要能够在java中保存并加载当前时间。我可以使用System.currentTimeMillis()
来存储它,但我也需要能够以不同的格式写出来,比如; “yyyy-mm-dd”,“dd / mm hour:min:sec”等。
该程序将节省从System.currentTimeMillis()
到txt文件的时间,因此即使计算机或程序出现问题,它也需要能够直接回到它的任务中。
答案 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()));
答案 1 :(得分:1)
序列化为文字:
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 8中的新java.time包。避免使用较旧的捆绑类java.util.Date& .Calendar,因为它们非常麻烦。
要开始使用Joda-Time,请尝试:
System.out.println( DateTime.now() );
然后在StackOverflow中搜索“joda”或“joda date”。
将日期时间值序列化为文本存储时,请使用YYYY-MM-DDTHH-MM-SS.sss+00:00
格式2014-03-11T23:54:15+01:00
,例如2014-03-11T22:54:15Z
或2014-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。