Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime Blackberry中的HTTP日期格式_Datetime_Blackberry_Java Me - Fatal编程技术网

Datetime Blackberry中的HTTP日期格式

Datetime Blackberry中的HTTP日期格式,datetime,blackberry,java-me,Datetime,Blackberry,Java Me,我需要在黑莓HTTP日期格式。例如: 2013年4月13日星期六06:06:13 GMT 我已经实现了这一点。以下是我的Date Util类代码: package mypackage; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import net.rim.device.api.i18n.Locale; import net.rim.device.api.i18n.SimpleDa

我需要在黑莓HTTP日期格式。例如:

2013年4月13日星期六06:06:13 GMT

我已经实现了这一点。以下是我的Date Util类代码:

package mypackage;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import net.rim.device.api.i18n.Locale;
import net.rim.device.api.i18n.SimpleDateFormat;

public class DateUtils {

       private static SimpleDateFormat _df;

       public static String getDate()
       {
          Calendar cal = Calendar.getInstance();
          cal.setTime( new Date() );

          int year = cal.get( Calendar.YEAR );
          int month = cal.get( Calendar.MONTH ) + 1;
          int day = cal.get( Calendar.DAY_OF_MONTH );

          return "" + year
                 + "-" + month
                 + "-" + day;
       }


       public static String getHttpDate()
       {
          return getHttpDate( new Date() );
       }

       public static String getHttpDate( long timestamp )
       {
          return getHttpDate( new Date( timestamp ) );
       }

       public static String getHttpDate( Date date )
       {
          return _df.format( date );
       }

       public static String getTime()
       {
          Calendar cal = Calendar.getInstance();
          cal.setTime( new Date() );

          int hours = cal.get( Calendar.HOUR_OF_DAY );
          // use 24 hour clock
          int minutes = cal.get( Calendar.MINUTE );
          int seconds = cal.get( Calendar.SECOND );
          int milli = cal.get( Calendar.MILLISECOND );

          return formatTime( hours, minutes, seconds, milli );
       }

       public static String getTimestamp()
       {
          Calendar cal = Calendar.getInstance();
          cal.setTime( new Date() );

          int year = cal.get( Calendar.YEAR );
          int month = cal.get( Calendar.MONTH ) + 1;
          int day = cal.get( Calendar.DAY_OF_MONTH );
          int hours = cal.get( Calendar.HOUR_OF_DAY );
          // use 24 hour clock
          int minutes = cal.get( Calendar.MINUTE );
          int seconds = cal.get( Calendar.SECOND );
          int milli = cal.get( Calendar.MILLISECOND );

          return "" + year
                 + "-" + month
                 + "-" + day
                 + "_" + formatTime( hours, minutes, seconds, milli );
       }

       private static String formatTime( int hours, int minutes, int seconds, int milli )
       {
          StringBuffer buf = new StringBuffer();
          buf.append( "" + hours );

          buf.append( "." );

          if( minutes < 10 )
             buf.append( "0" + minutes );
          else
             buf.append( "" + minutes );

          buf.append( "." );

          if( seconds < 10 )
             buf.append( "0" + seconds );
          else
             buf.append( "" + seconds );

          buf.append( "-" );

          if( milli < 10 )
             buf.append( "00" + milli );
          else if( milli < 100 )
             buf.append( "0" + milli );
          else
             buf.append( "" + milli );

          return buf.toString();
       }

       static
       {
          _df = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss zzz");

       }
}
我面临的问题是,它在操作系统5和操作系统7的模拟器上工作。 但是,不是在OS6模拟器上。 在torch 9800模拟器上,我得到

2013年4月13日星期六11:33:19 Asi

当时,我检查了设备,面临着同样的问题。
请帮帮我,我急需这个。

SimpleDateFormat将把您的
日期
对象转换为
日历
对象,该对象的时区将作为设备的默认时区

您得到的字符串实际上类似于2013年4月13日11:33:19亚洲/xxxx的Sat,其中xxxx是某个地方,具体取决于您在亚洲的居住国。然后您将其缩减为2013年4月13日11:33:19 Asi的Sat

如果希望以GMT格式获取数据,则需要传递具有正确时区的Calendar对象

public static String getHttpDate( Date date )
{
    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    cal.setTime(date);
    return _df.format(cal);
}
PS:上面的代码只在BlackBerry上有效,但在JavaSE上不起作用

public static String getHttpDate( Date date )
{
    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    cal.setTime(date);
    return _df.format(cal);
}