当地时间的麻烦

时间:2013-07-31 14:53:32

标签: java android time local

我使用这些代码来获取当地时间:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar currenDdate = Calendar.getInstance(TimeZone.getDefault());
System.out.print("Last update: "+dateFormat.format(currenDdate.getTime()));

或:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar currenDdate = Calendar.getInstance(getTimeZone("GMT+3.5"));
System.out.print("Last update: "+dateFormat.format(currenDdate.getTime()));

但是他们没有给当地时间,他们都给我GMT 有什么问题?

注意:我正在使用eclipse和android编程,上面的代码在java中正常工作但在android中它不是!

而不是system.out.print()我使用textview来显示时间

TextView date = (TextView) findViewById(R.id.gold_textView1);
date.setText("Last update: "+dateFormat.format(currenDdate.getTime()));

请帮我找到问题

4 个答案:

答案 0 :(得分:0)

尝试Date currentDate = new Date()而不是Calendar对象。您的System.out.print()来电不会改变。另外,仔细检查系统以确保其默认时区设置正确。

答案 1 :(得分:0)

你试过这样的事吗:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getDefault());
Calendar currenDdate = Calendar.getInstance(TimeZone.getDefault());
System.out
    .print("Last update: " + dateFormat.format(currenDdate.getTime()));

答案 2 :(得分:0)

而不是Calendar您需要在TimeZone上设置SimpleDateFormat

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss Z");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+0330"));

// prints: Last update: 2013/07/31 18:46:24 +0330
System.out.println("Last update: " + dateFormat2.format(currenDdate.getTime()));

这是必需的,因为SimpleDateFormat在内部使用了自己的Calendar实例。

请参阅SimpleDateFormat#setTimeZone()

public void setTimeZone(TimeZone zone)
{
    calendar.setTimeZone(zone);
}

请注意,日期格式模式还包括时区字母Z以将其包含在显示中。

答案 3 :(得分:0)

试试这个,使用JodaTime http://www.joda.org/joda-time/

DateTimeZone dateTimeZoneUTC = DateTimeZone.UTC;
DateTime dateTimeUTC = new DateTime().withZone(dateTimeZoneUTC);

DateTimeZone dateTimeZoneLocal = DateTimeZone.getDefault();
DateTime dateTimeLocal = dateTimeUTC.withZone(dateTimeZoneLocal);

DateTimeZone dateTimeZoneOffset = DateTimeZone.forID("-03:00");
DateTime dateTimeOffset = dateTimeLocal.withZone(dateTimeZoneOffset);

// Airport Current Time hh/mm
DateTimeFormatter timeFormat = DateTimeFormat.forPattern("hh/mm").withZone(dateTimeZoneOffset);
currentTime.setText(timeFormat.print(dateTimeOffset));