使用此查询,我从数据库中获取数字格式的月份。我可以用长格式获得月份吗? ' MMMM'
private List<String> ottieniMesi(){
List<String> result1 = new LinkedList<String>();
SQLiteDatabase db = new DatabaseHelper(getActivity()).getReadableDatabase();
String sql = "SELECT DISTINCT strftime('%m',"+Table.DATE+") FROM "+Table.TABLE_NAME;
Cursor c = db.rawQuery(sql, null);
while (c.moveToNext()){
result1.add(c.getString(0));
}
db.close();
return result1;
}
答案 0 :(得分:1)
没有。 sqlite date and time functions不支持此类转换。
请考虑在应用程序代码中进行转换。
例如:
int monthNumber = ...; // the value from query
monthNumber--; // convert to 0-based for Calendar
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, monthNumber);
String monthName = c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
答案 1 :(得分:0)
您可以使用 java.time.Month#getDisplayName
获取月份的名称。
演示:
import java.time.Month;
import java.time.format.TextStyle;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
// An arbitrary month number for demo - you are getting this value from the DB
int monthNumber = 0;
Month month = Month.of(monthNumber + 1);
String monthName = month.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println(monthName);
}
}
输出:
January
注意:此代码假设您正在获取基于 0
的 monthNumber
,即 1 月为 0,二月为 1,依此类推。如果不是这种情况,请仅使用 monthNumber
而不是 monthNumber + 1
。
从 modern date-time API 中了解有关 Trail: Date Time* 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。