我有一个格式的日期(例如)" 28-11-2014 00:00",我想按位置在android中显示。我的意思是,automatcliy系统检查该位置的位置和格式。
示例:
在不同国家/地区,用户会看到不同的文字。有人可以帮帮我吗? 无论如何,为了在模拟器中测试,我可以为更改系统区域设置做些什么?
感谢
编辑:我在
下面发布了一个解决方案答案 0 :(得分:2)
你试过这个:
Most applications will use TimeZone.getDefault()
which returns a TimeZone based on the time zone where the program is running.
通过此功能,您可以获得运行应用程序的时区。或者您想在世界各地的App时区上显示?
然后,您可以通过检查互联网上的数据手动导入它们,或者尝试使用Google搜索包含此类内容的API。
答案 1 :(得分:2)
我用Google TimeZone API完成了这项工作。
curl -X GET https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510×tamp=1331161200&key=API_KEY
{
"dstOffset" : 0.0,
"rawOffset" : -28800.0,
"status" : "OK",
"timeZoneId" : "America/Los_Angeles",
"timeZoneName" : "Pacific Standard Time"
}
您可以使用以下代码获取当地时间。
TimeZone timeZone = new SimpleTimeZone((int) getRawOffset(), getTimeZoneId());
Calendar cal = Calendar.getInstance();
cal.setTimeZone(timeZone);
String localDate = new SimpleDateFormat("MM-dd-yyyy HH:mm").format(cal.getTime());
答案 2 :(得分:1)
我得到了自己的答案!这是解决方案
//my format
String format = "yyyy-MM-dd HH:mm";
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setTimeZone(TimeZone.getTimeZone("CET"))
//my date
String dateInString = "2014-11-28 11:00";
Date date = sdf.parse(dateInString);
//my solution
sdf.setTimeZone(TimeZone.getDefault());
System.out.format("%30s %s\n", format, sdf.format(date));
//example
sdf.setTimeZone(TimeZone.getTimeZone("CET"));
System.out.format("%30s %s\n", format, sdf.format(date));
sdf.setTimeZone(TimeZone.getTimeZone("PST"));
System.out.format("%30s %s\n", format, sdf.format(date));