Android/java 字符串/日期/时间戳的转化

Android中用到的日期格式化和Java中一样的。一般需求都是将当前日期或者后台传来的时间戳转化为格式化的字符串,整理如下:

  一、将字符串转化成Date。

  String test = new String("2018/03/01");

 

  SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd/hh点mm分");

 

 

  try {
    Log.e("test",sdf1.parse(test).toString());
  } catch (ParseException e) {
    e.printStackTrace();
    Log.e("test",e.toString());
  }

  运行后报错java.text.ParseException: Unparseable date: "2018/03/01"。此操作需要给定的字符串和格式对应,否则就会解析异常。将test改为“2018/03/01/11/32”测试仍会报同样异常,此处不再举其他错误例子。也就是说除了数字和字母对应之外,其余的年月日和连接符也要对应才可以正常解析。解析出来的是一个Date对象。

  二、将Date对象转化为格式化的字符串

  Date date = new Date();

  Log.e("test",sdf1.format(date));//E/test: 2018/03/01/11点40分

  在这里说一下Date。Date是JDK1.0就有的类,代表了精确到毫秒的时间的实例,默认的构造方法传递的是系统当前的毫秒值,System.currentTimeMillis()这个时间有可能不够精确,详情可以参阅关于闰秒和GMT/UT的文档。也可以在构造时传入指定的毫秒值。还有几个在JDK1.1后废弃的构造方法,分别是传入指定的年月日日分秒或者字符串然后解析格式化,但这几个方法在国际化时会有问题,因此Java分别在Calendar中转化日期和时间并在DateFormat中转化日期和字符串。Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date);DateFormat.parse(String s)是相应的替代方法。

  三、TimeStamp

  TimeStamp extends java.util.Date,构造器传入的是一个毫秒值。由于是Date的子类,它也可以通过DateFormat来格式化成指定的字符串。Date也可以调用getTime()获得毫秒值。TimeStamp有一个静态方法valueOf(String str)可以将字符串转为TimeStamp对象,不过这个方法要求传入指定格式的字符串。

  此外在项目中还有一个问题是Java中的时间戳即Syste.currentTimeMillis()返回的是13位的long型数据,而服务端收发的一般是十位的时间戳,注意转型的问题。

 

posted @ 2018-03-01 14:43  老乡别跑  阅读(1424)  评论(0编辑  收藏  举报