El trasfondo es: cuando gradle genera el paquete apk, se debe generar un nombre de paquete específico, de la siguiente manera; sin embargo, el logotipo UTC se usa para imprimir la hora internacional, y la hora internacional está ocho zonas horarias detrás de la hora de Beijing, es decir , ocho horas de retraso. ¿Cómo usar la hora de Pekín?
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith(".apk")) {
if (variant.buildType.name == "release") {
outputFileName = "xxx_v" + defaultConfig.versionName + "_" + releaseTime() + "_" + variant.productFlavors[0].name + ".apk"
} else {
outputFileName = "xxx_v" + defaultConfig.versionName + "_" + releaseTime() + "_" + variant.productFlavors[0].name + "_" + variant.buildType.name + ".apk"
}
}
}
}
}
static def releaseTime() {
// 国际时间,比北京时间晚八小时
// TimeZone beijingTimeZone = TimeZone.getTimeZone("UTC")
// 获取代表北京时区的TimeZone对象
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai")
// 创建一个SimpleDateFormat实例,并将其时区设置为北京
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm")
dateFormat.setTimeZone(timeZone)
// 获取当前时间并格式化为北京时间
return dateFormat.format(new Date())
}
Solución: obtenga el objeto TimeZone que representa la zona horaria de Beijing, el identificador es "Asia/Shanghai", y luego formatee la fecha de la hora actual. El método anterior se define y utiliza en el archivo Gradle. El siguiente es un ejemplo de uso en un archivo java:
public static void main(String[] args) {
System.out.println(releaseTime());
}
public static String releaseTime() {
// 国际时间,比北京时间晚八小时
// TimeZone beijingTimeZone = TimeZone.getTimeZone("UTC");
// 获取代表北京时区的TimeZone对象
TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
// 创建一个SimpleDateFormat实例,并将其时区设置为北京
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");
dateFormat.setTimeZone(timeZone);
// 获取当前时间并格式化为北京时间
return dateFormat.format(new Date());
}
Crear valor, feliz de compartir!