java编程心得(十八)——关于日期的相关处理技巧
2013-10-08 10:47
561 查看
(一)Java获取并输出两日期间的所有日期
做数据分析和统计时,经常会要统计一段日期间的所有数据,简单的将日期当做数字来遍历肯定是不妥的,因为月份的更替会导致数字的不连续,那么如何获取指定起止日期间的所有日期呢,我们可以借由java.util.Calendar和java.util.Date库来实现这一目的。示例代码如下:
输出结果如下:
(二)多种日期格式相互转换
在数据清洗或格式标准化时,常常遇到转换日期格式的问题,如果完全人工分析字符串,肯定比较费时费力,我们可以使用java.text.SimpleDateFormat库来轻松解决这一问题。
【示例】原始日期格式为“14:09:59:31/Dec/2013”,我们要转换为“ 2013:12:31-14:09:59”
在程序开头导入:
编写指定日期格式的转换函数:
测试代码及输出结果:
做数据分析和统计时,经常会要统计一段日期间的所有数据,简单的将日期当做数字来遍历肯定是不妥的,因为月份的更替会导致数字的不连续,那么如何获取指定起止日期间的所有日期呢,我们可以借由java.util.Calendar和java.util.Date库来实现这一目的。示例代码如下:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Test { public static void main(String[] args) throws ParseException { //起止日期 String startDate = "20130927"; String endDate = "20131004"; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Long startM = sdf.parse(startDate).getTime(); Long endM = sdf.parse(endDate).getTime(); long result = (endM - startM) / (24 * 60 * 60 * 1000); System.out.println("起止日期相差:" + result + "天"); Date startDay = sdf.parse(startDate); Calendar startTime = Calendar.getInstance(); startTime.clear(); startTime.setTime(startDay); for (int i = 0; i < (int)result; i++) { String date = String.format("%1$04d%2$02d%3$02d", startTime.get(Calendar.YEAR), (startTime.get(Calendar.MONTH)+1), startTime.get(Calendar.DAY_OF_MONTH)); System.out.println(date); startTime.add(Calendar.DAY_OF_YEAR, 1); } } }
输出结果如下:
起止日期相差:7天 20130927 20130928 20130929 20130930 20131001 20131002 20131003
(二)多种日期格式相互转换
在数据清洗或格式标准化时,常常遇到转换日期格式的问题,如果完全人工分析字符串,肯定比较费时费力,我们可以使用java.text.SimpleDateFormat库来轻松解决这一问题。
【示例】原始日期格式为“14:09:59:31/Dec/2013”,我们要转换为“ 2013:12:31-14:09:59”
在程序开头导入:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Locale;
编写指定日期格式的转换函数:
public static String dateFormatConvert(String date_old){ SimpleDateFormat sdf_old = new SimpleDateFormat( "HH:mm:ss:dd/MMM/yyyy", Locale.ENGLISH); //指明转换前日期格式 SimpleDateFormat sdf_new = new SimpleDateFormat( "yyyy:MM:dd-HH:mm:ss"); //指明转换后日期格式 String date_new = ""; try { date_new = sdf_new.format(sdf_old.parse(date_old)); } catch (ParseException e1) { e1.printStackTrace(); } return date_new; }
测试代码及输出结果:
public static void main(String[] args) { String date_old = "14:09:59:31/Dec/2013"; String date_new = dateFormatConvert(date_old); System.out.println("转换前日期格式: "+date_old); System.out.println("转换后日期格式: "+date_new); } 输出: 转换前日期格式: 14:09:59:31/Dec/2013 转换后日期格式: 2013:12:31-14:09:59
相关文章推荐
- Java中关于日期的处理
- Java 编程中关于异常处理的 10 个最佳实践
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- Java 编程中关于异常处理的 10 个最佳实践
- 【JAVA秒会技术之Joda-Time】满足你所有关于日期的处理
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- Swing:关于Java界面编程的第一课,如何正确的处理界面中的线程
- java编程过程中对处理异常的心得
- 关于日期,java处理日期间隔的方法(简单实用)
- Java心得---封装、日期、数学等相关类
- java 关于使用java1.8的localDateTime日期操作的基本使用以及一些使用技巧 持续更新...
- 《Java 编程技巧1001条》第421条:如何不处理事件
- Java关于图像文件的相关业务处理
- java 日期处理相关
- Oracle关于日期处理技巧
- 【编程技巧】java不使用第三个变量处理两个变量的交换
- Java 编程中关于异常处理的 10 个最佳实践
- Java心得---封装、日期、数学等相关类
- java关于日期的运算等处理方法
- 关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题。