代码之家  ›  专栏  ›  技术社区  ›  Paresh Mayani jeet

将日期转换为毫秒时遇到问题

  •  1
  • Paresh Mayani jeet  · 技术社区  · 14 年前

    在我的 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(2010年11月22日美国东部时间14:49:00)

    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?

    5 回复  |  直到 14 年前
        1
  •  1
  •   Jim    14 年前

    这条线

    c.setTimeZone(TimeZone.getTimeZone("UTC"));
    

    可能是引起这个问题的原因。不需要设置时区,因为使用的是当前默认值。

        2
  •  1
  •   Community davidgyoung    7 年前

    我猜你在打电话 Date_to_MilliSeconds(22, 10, 2010, 19, 49) . 您的代码显式地使用UTC,因此它将把传入的任何内容都视为UTC。

    就像你的 previous question (这让我很想把它作为一个副本关闭)不清楚你到底想做什么。

    如果要为方法提供本地时间,则需要指定本地时区。如果需要使用用户时区中的本地时间,请尝试将时区设置为 TimeZone.getDefault() -尽管我认为这是默认的。如果要为方法提供UTC时间,则需要指定一个UTC时区(正如您在这里一样)。

    你是干什么的 真正地 想做什么?

        3
  •  1
  •   buddhabrot    14 年前

    在这段代码中,您将得到自1970年1月1日00:00起在您的时区中的毫秒数,时间是2010年11月22日19:49:00,时间是UTC时区。为什么要将时区设置为UTC?

        4
  •  1
  •   cristis    14 年前

    5小时的差异是UTC和EST之间的差异。你可以用 DateFormat.parse() 如果输入日期是字符串,则解析该日期。或者您可以使用上面的代码并传入所需的时区 c.setTimeZone() --输入EST而不是UTC。

        5
  •  0
  •   neteinstein Eric Lafortune    13 年前

    我用这个:

    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());
    }
    

    我认为它解决了时区问题。