Java 将设备本地时区上的日期更改为字符串

Java 将设备本地时区上的日期更改为字符串,java,android,Java,Android,我正在从数据库中获取一个Date数据类型,如下所示Mon Sep 14 11:30:00 GMT+03:00 2020。我想将此值更改为字符串,因此我使用了此函数 public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm"; public static String dateToString(Date date){ DateFormat dateFormat = new SimpleDateFormat(

我正在从数据库中获取一个
Date
数据类型,如下所示
Mon Sep 14 11:30:00 GMT+03:00 2020
。我想将此值更改为字符串,因此我使用了此函数

public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm";


public static String dateToString(Date date){
    DateFormat dateFormat = new SimpleDateFormat(General.DATE_FORMAT);
    dateFormat.setTimeZone(TimeZone.getDefault());
    if(date == null)
        return "";
    return dateFormat.format(date);
}
这个函数给了我这个输出
2020-09-14 11:30
,但根据我的android设备时区,它应该是
2020-09-14 02:30
。有什么建议吗?

试着提前设置好

TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
您可以使用它,它可以通过now降低Android API级别

此代码输出

2020-09-1411:30
2020-09-14 10:30

请注意输出当然采用了我当前的偏移量,即UTC+02:00。

尝试
getDefault()
语言环境方法

public static String dateToString(Date date){
    DateFormat dateFormat = new SimpleDateFormat(General.DATE_FORMAT, Locale.getDefault());
    dateFormat.setTimeZone(TimeZone.getDefault());
    if(date == null)
        return "";
    return dateFormat.format(date);
}

希望它对你有用。谢谢。

只需删除这一行
dateFormat.setTimeZone(TimeZone.getDefault())
public static String dateToString(Date date){
    DateFormat dateFormat = new SimpleDateFormat(General.DATE_FORMAT, Locale.getDefault());
    dateFormat.setTimeZone(TimeZone.getDefault());
    if(date == null)
        return "";
    return dateFormat.format(date);
}