背景是:在gradle生成apk包时,需要生成特定包名,如下;但是使用UTC标识,打印的时国际时间,而国际时间被北京时间晚八个时区,也就是晚八个小时。怎么使用北京时间呢?
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())
}
解决办法:获取代表北京时区的TimeZone对象,标识是“Asia/Shanghai",然后格式化当前时间的日期,以上是在gradle文件中方法定义与使用。以下是在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());
}
创造价值,乐哉分享!