SimpleDateFormat必须格式化从unix时间戳到unix时间戳的格式?
拥有此代码:
String format = System.getProperty("myformat");
SimpleDateFormat sdf = new SimpleDateFormat(format);
System.out.println(sdf.format(new java.util.Date(System.currentTimeMillis())));
我无法修改代码
获取Unix时间戳的属性myformat
的值必须是什么?
答案 0 :(得分:3)
Date是Unix时间戳长的包装器。
不幸的是,SimpleDateFormat没有Date.getTime()
的输出。
即使带有LocalDateTime的新DateTimeFormatter也不提供长字符的字符串表示。
您可以从SimpleDateFormat扩展自己的日期/时间格式化程序。我认为' b'可以免费使用。这将是一项不必要的工作,因为使用Unix时间戳编号和其他单位(年,月,...)的格式的用例很少。
评论后。
<啊>啊哈,一个任务,一个谜题。您可以在人工派生日期滥用SimpleDateFormat符号。Calendar calendar = new Calendar();
long t = calendar.getTimeInMillis(); // The Unix timestamp
int ms = (int)(t % 1000);
int yr = (int)(t / 1000);
calendar.set(Calendar.MILLIS, ms);
calendar.set(Calendar.YEAR, yr);
Date artificialDate = calendar.getTime();
String s = new SimpleDateFormat("ySSS").parse(date);
或者您可以创建自己的区域设置,而不是月份名称可以提供长的。 这似乎在这里被问到。但是我把这个功课留给你了。
答案 1 :(得分:0)
Unix时间戳是自1970年1月1日以来秒的计算(UTC)。另一方面,SimpleDateFormat
是用于格式化和解析日期的具体类。它只提供解析日期的格式化版本。
如果您确实需要使用
SimpleDateFormat
,这是您唯一的选择。
Date date = new Date();
System.out.println(date.getTime());
SimpleDateFormat sf = new SimpleDateFormat();
sf.format(date);
System.out.println(sf.getCalendar().getTimeInMillis());
输出:
1523545871501
1523545871501