不规则时间字符串处理(Java)
来源:互联网 发布:道路车流量预测软件 编辑:程序博客网 时间:2024/06/05 08:44
最近从MongoDB中读取时间字符串。由于写入字符串时没有处理,该字符串显示的时间格式很不规律,如“2017-04-14 11:05”,“2017年11月14 11:05”,“2017-11-14日11:05”,“20170414”等。
我听说PHP有个函数可以把各种时间格式的字符串转成linux时间戳。不过Java我不知道有没有这样的函数,所以自己按规则写了一个。先转成时间戳,在转回规定格式。
代码很丑,不优雅,以后想起了再琢磨一下写成工具类。现在先记下来方便用。
package Test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;import java.util.Vector;public class Test{ public static void main(String[] args) { String term = "20170414"; System.out.println(getTime(term)); } public static String getTime(String givingTime){ SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.ENGLISH); givingTime = givingTime.replaceAll("([^0-9] )|([^0-9])"," "); givingTime = givingTime.replaceAll("\\s{1,}", " "); String[] numbers = givingTime.split(" "); if (numbers.length == 1){ String time = numbers[0]; SimpleDateFormat format; if (time.length() == 8) format = new SimpleDateFormat("yyyyMMdd",Locale.ENGLISH); else if (time.length() == 14) format = new SimpleDateFormat("yyyyMMddHHmmss",Locale.ENGLISH); else if (time.length() > 8){ time = time.substring(0, 8); format = new SimpleDateFormat("yyyyMMdd",Locale.ENGLISH); } else{ format = null; return sdf.format(new Date(0)); } Date date = null; try { date = format.parse(time); } catch (ParseException e) { e.printStackTrace(); } return sdf.format(date); } Vector<Integer> nums = new Vector<Integer>(); for (int i = 0; i < 6; i++) nums.add(0); if (numbers.length > 3){ if(Integer.parseInt(numbers[2]) > 31){ String tmp = numbers[2].substring(0, 2); if (Integer.parseInt(tmp) > 31) tmp = numbers[2].substring(0, 1); numbers[3] = numbers[2].substring(tmp.length()); numbers[2] = tmp; } } for (int i = 0; i < numbers.length; i++){ nums.setElementAt(Integer.parseInt(numbers[i]), i); System.out.println("i = " + i + ": nums = " + nums.get(i)); } int year = nums.get(0); int month = nums.get(1); int day = nums.get(2); int hour = nums.get(3); if (hour > 24) hour = 0; int min = nums.get(4); if (min > 60) min = 0; int sec = nums.get(5); if (sec > 60) sec = 0; Calendar calendar = Calendar.getInstance(); System.out.println(year+ " " + (month-1)+ " " + day+ " " + hour+ " " + min+ " " + sec); calendar.set(year, month-1, day, hour, min, sec); return sdf.format(calendar.getTime()); }}
0 0
- 不规则时间字符串处理(Java)
- sqlserver 不规则字符串转换为时间格式需要的格式
- 时间字符串处理
- 常见字符串时间处理
- Java日期处理——字符串转换为日期时间
- Java时间处理和int字符串补0问题
- postgreSQL字符串类型时间处理
- Java 时间日期处理:取某一时间,Date转字符串,计算时间差,时间比较大小
- 时间处理:字符串转换成时间
- 几个常用函数(切除字符串,时间处理,文件上传)
- java 处理系统时间(转载)
- Java Calendar 类用例(处理时间)
- Java的时间处理
- Java日期时间处理
- java中的时间处理
- Java的时间处理
- JAVA时间格式化处理
- JAVA 处理数据库时间
- try_to_wake_up函数
- VirtualBox中的Mac系统的使用心得
- python3 实现自动生成入账记录表
- node.js项目改进之restful API接口支持
- hdu 2016
- 不规则时间字符串处理(Java)
- Golang集成环境与HelloWorld
- SecureCRT SSH自动化采集脚本
- Netty5的例子,简单介绍Netty的用法
- maven安装本地jar包
- 【JAVA秒会技术之玩转图片】图片下载和等比或指定大小压缩快速实现
- 一款轻量级写作神器Typora
- dubbo+zookeep+rocketmq 文章
- hdu 2017