1

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

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

但他们都不给当地时间,他们都给我格林威治标准时间有什么问题?

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

而不是 system.out.print() 我使用文本视图来显示时间

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

请帮我找出问题

4

4 回答 4

0

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

于 2013-07-31T14:55:36.753 回答
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()));
于 2013-07-31T15:06:33.447 回答
0

而不是Calendar你需要设置你TimeZoneSimpleDateFormat

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以将其包含在显示中。

于 2013-07-31T15:19:15.457 回答
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));
于 2017-02-17T20:22:58.373 回答