我正在尝试将此时间戳值转换为日期,但它给了我错误的时间。日期是正确的
TimeStamp : 1423821615
True Value : Fri, 13 Feb 2015 10:00:15 GMT
Android Code shows : Fri, 13 Feb 2015 15:30:15 IST
以下是我用来将时间戳转换为日期的代码。
Date dt = new Date((long)timestampInSeconds * 1000);
我也尝试了这段代码但结果相同
public static Date getDateFromTimeStamp(long timestampInMilliseconds) {
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestampInMilliseconds);
return cal.getTime();
}
Date dt = getDateFromTimeStamp((long)timestampInSeconds * 1000);
我不知道我做错了什么。请帮忙
现在我解释整个场景。我的客户来自英国,我来自印度(提前5:30)。他明显在英国上午10点创建了约会。但现在我的本地PC上有他的数据库。我的.NET软件显示的时间与SQL服务器的下图相同。但在移动设备方面却没有。 PC和手机都在同一时区。
我使用此代码将日期转换为时间戳,并通过网络服务将此时间戳发送到移动应用
SELECT DATEDIFF(SECOND,{d '1970-01-01'}, Appointments.DateTime) AS AppointmentTimeStamp FROM Appointments
当数据库在英国时区时创建记录是否重要。或者我在某个地方仍然犯了一个错误。
答案 0 :(得分:0)
我不明白你想要得到什么。 如果您有时间作为EPOCH时间,您将无法获得有关制作此时间戳的时区的信息。因此,您应该知道时区偏移量,并且从此时间戳开始+或减去此秒数。
但我认为使用ISO 8601格式制作时间戳的最佳方法是,您可以轻松转换为您需要的任何时区
例如,此代码将ISO数据转换为本地时间或返回当前时间取决于区域设置时区
private long time2LocalTimeZone (String date){
//"2016-07-29T23:07:45.120+00"
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault());
try {
return sdf.parse(date).getTime();
} catch (ParseException e){
return (new Date()).getTime();
}
}
此代码计算您与GMT时区的偏移量并转换为纪元时间取决于区域设置时区
private long time2LocalTimeZone (long date){
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
int offsetFromUtc = tz.getOffset(now.getTime()) / 1000;
return date + offsetFromUtc;
}