我有时间来自1352437114052格式的gpslocation服务。有人可以告诉我如何在Java或Matlab或Excel中将其转换为本地时间。
答案 0 :(得分:4)
这是一个epoch time,它代表星期五,2012年11月9日04:58:34 GMT。此数值是绝对时间点,与时区无关。
如果您想在不同时区看到该时间点,请使用GregorianCalendar
:
Calendar c = new GregorianCalendar(TimeZone.getTimeZone("EST"));
c.setTimeInMillis(1352437114052L);
c.get(Calendar.HOUR_OF_DAY); //20:58 the day before
答案 1 :(得分:3)
从epoch开始,从你的毫秒开始创建一个新的Date
。然后使用DateFormat
在所需的时区中对其进行格式化。
Date date = new Date(1352437114052L);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
format.setTimeZone(TimeZone.getTimeZone("PST"));
System.out.println(format.format(date));
答案 2 :(得分:0)
@Steve Kuo几乎直接回答了这个问题。这是计算机本地时间的更通用的解决方案,包括夏令时,其中#!/usr/bin/perl
$|=1;
my $warning_message_to_drop_reg = qr/constant subroutine.+redefined|prototype mismatch|^\s+at\s+\/\w+/i;
while (<STDIN>) {
my $message = $_;
next if ($message =~ /$warnings_message_to_drop_reg/);
# You should add custom code here, to write to other locations, if desired
# If you log your session id, you can grab it here to decide what to do.
print $message; # Goes to normal apache error log
}
的类型为a
在BasicFileAttributes
期间从public FileVisitResult visitFile(Path f, BasicFileAttributes a)
中的Windows目录条目报告:
Files.walkFileTree
答案 3 :(得分:0)
long timeStamp = System.currentTimeMillis();
System.out.println(timeStamp+"");
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getDefault());
calendar.setTimeInMillis(timeStamp);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a z");
String dateString = sdf.format(calendar.getTime());
System.out.println(dateString);
输出:
timestamp : 1528860439258
dateformat from sdf : 2018-06-12 08:27:19 PM PDT
答案 4 :(得分:0)
使用JVM时区设置的现代Java答案(通常与计算机的时区相同):
long time = 1_352_437_114_052L;
ZonedDateTime dateTime = Instant.ofEpochMilli(time).atZone(ZoneId.systemDefault());
System.out.println(dateTime);
在我的电脑上运行
2012-11-09T05:58:34.052 + 01:00 [欧洲/哥本哈根]
指定时区:
ZonedDateTime dateTime = Instant.ofEpochMilli(time).atZone(ZoneId.of("Asia/Almaty"));
2012-11-09T10:58:34.052 + 06:00 [亚/阿拉木图]
回答tinker’s comment here:是的。我正在使用java.time
,现代Java日期和时间API,它适用于较旧和较新的Android设备。它只需要至少Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
。java.time
向Java 6和7的后端(JST-310的ThreeTen)。答案 5 :(得分:0)
由于 new Date(String string) 现在已弃用(这是公认的答案),我们可以使用 DateTimeZone.getDefault()
获取系统时区
public String getZonedDate(String dateStr) {
DateTime utcDateTime = new DateTime(dateStr).toDateTime(DateTimeZone.UTC);
return utcDateTime
.toDateTime(DateTimeZone.getDefault()).toString("yyyy-MM-dd'T'HH:mm:ss");
}