[英]android.text.format.Time replacement need as it is deprecated
我是android的新手,我有使用Time对象需要使用的代码。 有人可以在不使用Time类的情况下帮助我实现相同的功能。
Time dayTime = new Time();
dayTime.setToNow();
// we start at the day returned by local time. Otherwise this is a mess.
int julianStartDay = Time.getJulianDay(System.currentTimeMillis(), dayTime.gmtoff);
// now we work exclusively in UTC
dayTime = new Time();
long dateTime;
// Cheating to convert this to UTC time, which is what we want anyhow
// this code below is in a for loop
dateTime = dayTime.setJulianDay(julianStartDay + i);
day = getReadableDateString(dateTime);
使用具有HH:mm:ss格式的SimpleDateFormat函数来实现此功能。
SimpleDateFormat serverFormat = new SimpleDateFormat("HH:mm:ss",Locale.getDefault());
serverFormat.format(Calendar.getInstance());
根据Android文档 ,API级别22中不推荐使用时间类。 请改用GregorianCalendar类。
GregorianCalendar gc = new GregorianCalendar();
//since you have asked for the function to achieve in loop
for(int i= 0; i<Array.length;i++){
gc.add(GregorianCalendar.DATE, 1);
}
//code for formatting the date
Date time = gc.getTime();
SimpleDateFormat shortDateFormat = new SimpleDateFormat("EEE MMM dd");
day = shortenedDateFormat.format(time);
正如@Vamisi所说,我们可以使用GregorianCalendar
,但他的代码似乎有问题。
如果我们每次在循环中调用以下::
gc.add(GregorialCalendar.Date,i);
GregorialCalendar
实例是GC。 每次如果我们用i
添加日期,首先它将是1 + 1 next,2 + 2,4 + 3 ......等等
所以正确的方法是这样的:
//since you have asked for the function to achieve in loop
for(int i= 0; i<Array.length;i++){
GregorianCalendar gc = new GregorianCalendar();
gc.add(GregorianCalendar.DATE, i);
}
//code for formatting the date
Date time = gc.getTime();
SimpleDateFormat shortDateFormat = new SimpleDateFormat("EEE MMM dd");
day = shortDateFormat.format(time);
参考: http : //developer.android.com/reference/java/util/GregorianCalendar.html http://www.tutorialspoint.com/java/util/gregoriancalendar_add.htm
我猜这是关于开发Android应用程序的Udacity课程的一部分,论坛中也没有关于时间类弃用的更正。
它的替代品是格里高利历年级 。 您可以参考Android开发人员博客上更新的文档: http : //developer.android.com/reference/android/text/format/Time.html
至于使用格里高利历的代码更改,以便它以相同的方式工作(即使用循环迭代几天),这里是你可以做的:
JSONObject forecastJson = new JSONObject(forecastJsonStr);
JSONArray weatherArray = forecastJson.getJSONArray(OWM_LIST);
//Using the Gregorian Calendar Class instead of Time Class to get current date
Calendar gc = new GregorianCalendar();
String[] resultStrs = new String[numDays];
for(int i = 0; i < weatherArray.length(); i++) {
// For now, using the format "Day, description, hi/low" for the app display
String day;
String description;
String highAndLow;
// Get the JSON object representing the day
JSONObject dayForecast = weatherArray.getJSONObject(i);
//Converting the integer value returned by Calendar.DAY_OF_WEEK to
//a human-readable String
day = gc.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.ENGLISH);
//iterating to the next day
gc.add(Calendar.DAY_OF_WEEK, 1);
// description is in a child array called "weather", which is 1 element long.
JSONObject weatherObject = dayForecast.getJSONArray(OWM_WEATHER).getJSONObject(0);
description = weatherObject.getString(OWM_DESCRIPTION);
// Temperatures are in a child object called "temp".
JSONObject temperatureObject = dayForecast.getJSONObject(OWM_TEMPERATURE);
double high = temperatureObject.getDouble(OWM_MAX);
double low = temperatureObject.getDouble(OWM_MIN);
highAndLow = formatHighLows(high, low);
resultStrs[i] = day + " - " + description + " - " + highAndLow;
}
注意:对象gc设置为创建时的当前时间[ Calendar gc = new GregorianCalendar();
你可以简单地运行gc.get(Calendar.DAY_OF_WEEK)
来获得一个对应于星期几的整数。 例如:7对应于星期六,1对应星期日,2对应星期一,依此类推。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.