因项目开发,有一个地方的需求是需要转换时间戳显示正常时间。
But,除了常用的格式,还有一个地方的需求是需要:
转换时间格式:
28 April 2017 18:36
这是什么鬼?位置奇怪我也认了,中间还有一个英文带大写的?
于是乎,各种搜索,结果一无所获,也许是本菜鸟没有搜索到。。。
因为都是结果都是常用方式:
dd/MM/yyyy HH:mm——28 04 2017 18:36
现在问题解决的,把一些东西整理出来,方便日后使用。
首先我们也来点常用的。
通常我会写一个工具类,然后引用:
(部分代码)-粘贴也可直接使用
public static String transferLongToDate(Long millSec) {
if(millSec<1){
return "00:00";
}else {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date date = new Date(millSec);
return sdf.format(date);
}
}
使用方式,例如:
//获取当前系统时间
long lastLearnearnTime = System.currentTimeMillis()
//调用long型转String转换时间类型工具类 (long参数,自定义转换格式),(long参数)
String strs = DateUtils.transferLongToDate("d MMMM yyyy HH:mm", lastLearnearnTime);
//工具类会在下面附上
工具类代码:
/**
* Created by DaQiE on 2017/3/13.
* 如果获取时间失败,或者没有获取到时间,或者是通过服务器返回的时间来转换的,
* 这里就要注意了,有可能返回的是-1或者其他值,所以事先做一个判断处理,
* 是一个好习惯。
*/
public class DateUtils {
/**
* 把毫秒转化成日期
*
* @param dateFormat(日期格式,例如:MM/ dd/yyyy HH:mm:ss)
* @param millSec(毫秒数)
* @return
*/
public static String transferLongToDate(String dateFormat, Long millSec) {
if(millSec<1)
return "00:00";
//参数一是格式,参数二是转换语言标准(Locale.ENGLISH,英文大写)
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
Date date = new Date(millSec);
return sdf.format(date);
}
//常用转换
public static String transferLongToDate(Long millSec) {
if(millSec<1){
return "00:00";
}else {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date date = new Date(millSec);
return sdf.format(date);
}
}
}
那么上述结果怎么输出来呢?
其实很简单,格式用:d MMMM yyyy HH:mm
用工具类里面第一个转换方法,就会返回成,上述的
28 April 2017 18:36结果了。
其他的位数区别,就在于
d 〓日期
M 〓月份
y 〓年份
h 〓小时
m 〓分钟
的位数。
例如
MMMMM结果输出就是:April
MMM结果输出就是:Apr
可以小花点时间测试一下,得到想要的结果。