API 24之前用什么代替 SimpleDateFormat ?
API 24之前用什么代替 SimpleDateFormat ?
发布时间:2018-02-01 来源:查字典编辑
摘要:要弄个截图的应用,在网上找到一些源码,如下:publicstaticStringsaveToSD(Bitmapbmp){//判断sd卡是否存...

要弄个截图的应用,在网上找到一些源码,如下:

public static String saveToSD(Bitmap bmp) {
         //判断sd卡是否存在
         if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
             //文件名
             long systemTime = System.currentTimeMillis();
             String imageDate = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date(systemTime));
             String mFileName = String.format(SCREENSHOT_FILE_NAME_TEMPLATE, imageDate);

             File dir = new File(SCREENSHOTS_DIR_NAME);
             //判断文件是否存在,不存在则创建
             if (!dir.exists()) {
                 dir.mkdirs();
             }
......
}

String imageDate = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date(systemTime));

里面的这行好像是设置时间显示格式的,我不太清楚到底是怎么回事,总之这里的 SimpleDateFormat 只有api 24 之后才能用。

错误提示是:“Call requires API level 24 (current min is 19): new android.icu.text.SimpleDateFormat”。

但因为某些原因我必须在 api 19 上实现这个应用。所以我想问一下,在 api 19 里, 这一行的功能代码该怎么写呢?用什么来代替它呢?

回复讨论(解决方案)

用java包的SimpleDateFormat 用java包的SimpleDateFormat

居然还有这种坑,改完后不报错了,但又冒出个提示:

To get local formatting use 'getDateInstance()', 'getDateTimeInstance()', or 'getTimeInstance()', or use 'new SimpleDateFormat(String template, Locale locale)' with for example 'Locale.US' for ASCII dates. 

这个提示看不太懂。。他是在说我可以用更好的方式完成这个功能吗?

用java包的SimpleDateFormat

居然还有这种坑,改完后不报错了,但又冒出个提示:

To get local formatting use 'getDateInstance()', 'getDateTimeInstance()', or 'getTimeInstance()', or use 'new SimpleDateFormat(String template, Locale locale)' with for example 'Locale.US' for ASCII dates. 

这个提示看不太懂。。他是在说我可以用更好的方式完成这个功能吗?

我又去查了一下总算弄懂了,这是在说应该多加一个参数即国家表明一下标准。

改成这样就没问题了:

String imageDate = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.getDefault()).format(new Date(systemTime));

非常感谢你的帮助。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类