在我的 Android应用程序中,我正在尝试将日期/时间转换为毫秒,请检查以下代码:
public long Date_to_MilliSeconds(int day, int month, int year, int hour, int minute)
{
Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("UTC"));
c.set(year, month, day, hour, minute, 00);
return c.getTimeInMillis();
}
问题:我将于2010年11月22日19:49:00(即5小时后)收到1290455340800(11月22日14:49:00美国东部时间2010)
FYI, I am Currently in Indian TimeZone, but application can be executed from any country. so How do i exact Convert the date/time into the Milliseconds?
答案 0 :(得分:1)
我的猜测是你正在呼叫Date_to_MilliSeconds(22, 10, 2010, 19, 49)
。您的代码明确使用UTC,因此它会将您传递给它的任何内容视为UTC。
就像你的previous question(这让我试图将其作为副本关闭),目前还不清楚你真正想要做什么。
如果要为方法提供本地时间,则需要指定本地时区。如果您需要在用户的时区中使用本地时间,请尝试将时区设置为TimeZone.getDefault()
- 尽管我希望它仍然是默认值。如果要为方法提供UTC时间,则需要指定UTC时区(就像在这里一样)。
你真正尝试做什么?
答案 1 :(得分:1)
在这段代码中,您将获得自UTC时区11月22日19:49:00开始的时区01/01/1970 00:00以来的毫秒数。为什么要将时区设置为UTC?
答案 2 :(得分:1)
5小时的差异是UTC和EST之间的差异。如果输入日期是字符串,则可以使用DateFormat.parse()
来解析输入日期。或者您可以使用上面的代码并在c.setTimeZone()
中传递所需的时区 - 放入EST而不是UTC。
答案 3 :(得分:1)
这一行
c.setTimeZone(TimeZone.getTimeZone("UTC"));
可能导致问题。无需将TimeZone设置为使用当前默认值。
答案 4 :(得分:0)
我正在使用它:
public String timeToString(long time, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
sdf.setTimeZone(TimeZone.getDefault());
return sdf.format(time + TimeZone.getDefault().getRawOffset()
+ TimeZone.getDefault().getDSTSavings());
}
我认为它解决了TimeZone的问题。