我有一个像这样的日期 Tue Jun 21 14:47:37 GMT + 05:30 2016 ,我自己制作。我用日历创建它。用户选择日期的地方,我将其保存为日历中的毫秒数。 当我发送它,发送它时,我再次创建一个日历实例,将保存的毫秒放入其中并得到如下日期:
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getDefault());
calendar.setTimeInMillis(SSPreferences.getDate());
现在从日历中获取日期时我会这样做:
calendar.getTime()//This is what I send to server.
我将它发送到服务器,但是当服务器向我发送日期时,它总是在我的时间前5.5小时。
我知道我的时间是GMT + 5:50。那么服务器在做什么呢? 如何发送日期,以便我回到发送到服务器的相同日期。
感谢任何帮助。 感谢
答案 0 :(得分:0)
检查这个
static final String DATEFORMAT = "yyyy-MM-dd HH:mm:ss"
public static Date GetUTCdatetimeAsDate()
{
//note: doesn't check for null
return StringDateToDate(GetUTCdatetimeAsString());
}
public static String GetUTCdatetimeAsString()
{
final SimpleDateFormat sdf = new SimpleDateFormat(DATEFORMAT);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
final String utcTime = sdf.format(new Date());
return utcTime;
}
public static Date StringDateToDate(String StrDate)
{
Date dateToReturn = null;
SimpleDateFormat dateFormat = new SimpleDateFormat(DATEFORMAT);
try
{
dateToReturn = (Date)dateFormat.parse(StrDate);
}
catch (ParseException e)
{
e.printStackTrace();
}
return dateToReturn;
}
答案 1 :(得分:0)
最后,我通过在本地时区添加/减去rawOffSet来解决问题。
TimeZone timeZone = TimeZone.getDefault();
int offset = timeZone.getOffset(SSPreferences.getDate());
WriteLog.Print("offset is "+offset);
long newtime = SSPreferences.getDate() + offset;
calendar.setTimeInMillis(newtime);