`
bjmike
  • 浏览: 283055 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常用到的util类,记录一下

阅读更多
package com.atmu.report.util;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;

import org.apache.log4j.Logger;
public class Util {
	
	private static Logger logger=Logger.getLogger(Util.class);
	
	/**
	 * 返回子byte数组
	 */
	public static byte[] subByte(byte[] b,int begin,int end){
		byte[] ret=new byte[end-begin];
		for(int i=0;i<ret.length;i++)
			ret[i]=b[begin+i];
		return ret;
	}
	
	/**
	 * 合并两个数组
	 * @param b1
	 * @param b2
	 * @return
	 */
	public static byte[] mergeByte(byte[] b1,byte[] b2){
		if (b1==null)
			return b2;
		if (b2==null)
			return b1;
		byte[] ret=new byte[b1.length+b2.length];
		System.arraycopy(b1, 0, ret, 0, b1.length);
		System.arraycopy(b2, 0, ret, b1.length, b2.length);
		return ret;
	}
	
	/**
	 * 
	 * @param b
	 * @param startpos
	 * @param delimiter
	 * @return 指定分隔符的数组
	 */
	public static byte[] subByteDelimiter(byte[] b,int startpos,char delimiter){
		byte[] ret=new byte[1024];
		int i=0;
		for(;i<1024;i++){
			if(b[startpos+i]==delimiter)
				break;
			else{
				ret[i]=b[startpos+i];
			}
		}
		ret=subByte(ret,0,i);
		return ret;
		
	}
	/**
	 * 
	 * @param s:#{A41} + #{A42} - #{A43}
	 * @param delimiter1	{
	 * @param delimiter2	}
	 * @return
	 */
	
	public static String[] DemarkString(String s,char delimiter1,char delimiter2){
		String[] ret=null;
		String[] temp=s.split("#");
		ret=new String[temp.length-1];
		String item="";
		for(int i=1;i<=ret.length;i++){
			item=temp[i];
			//Log.info(item);
			ret[i-1]=item.substring(item.indexOf(delimiter1)+1, item.indexOf(delimiter2));
		}
		
		return ret;
	}
	
	
	/**
	 * 
	 * @param date1
	 * @param date2
	 * @return date2-date1
	 * @throws ParseException 
	 */
	public static long gettimeDiff(String startDate,String endDate) throws ParseException{
		SimpleDateFormat sd=new SimpleDateFormat("yyyyMMddHHmmss");
		Date d1=sd.parse(startDate);
		Date d2=sd.parse(endDate);
		return d2.getTime()-d1.getTime();
	}
	
	/**
	 * 
	 * @param date
	 * @param format
	 * @return 指定格式的日期字符串形式
	 * @throws Exception 
	 */
	public static String format(String date,String format_source,String format_target) throws Exception{
		SimpleDateFormat sd=new SimpleDateFormat(format_source);
		Date d1=sd.parse(date);
		sd=new SimpleDateFormat(format_target);
		return sd.format(d1);
	}
	
	public static void main(String[] args){
	/*	String s="abcdef|eaac";
		byte[] b=s.getBytes();
		String ss=new String(subByteDelimiter(b,1,'|'));
		
		String[] ssa=DemarkString("#{A41}",'{','}');
		
		for(String sss:ssa)
		System.out.println(sss);*/
		System.out.println(getDate("19960229",-1,2));
		
		
		/*String date1="20091207124900";
		String date2="20091207124901";
		try {
			logger.info(gettimeDiff(date1,getCurrentDate()+getCurrentTime()));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		logger.info("["+FomatNumber(2,2)+"]");*/
	}
	
	/**
	 * 
	 * @return 系统日期
	 */
	public static String getCurrentDate(){
		SimpleDateFormat sd=new SimpleDateFormat("yyyyMMdd");
		return sd.format(new Date());
	}
	
	public static String getYesterday(){
		Calendar ca=new GregorianCalendar();
		ca.add(Calendar.DAY_OF_MONTH, -1);
		return getDateFromCa(ca);
		/*Date d = ca.getTime();
		SimpleDateFormat sd=new SimpleDateFormat("yyyyMMdd");
		return sd.format(d);*/
	}
	
	/**
	 * 
	 * @param referDate 20100120
	 * @param datediff
	 * @return 根据指定日期与差别天数得到的新日期
	 */
	public static String getDate(String referDate,int datediff,int type){
		try{
			int day=Integer.parseInt(referDate.substring(6));
			int month=Integer.parseInt(referDate.substring(4,6));
			int year=Integer.parseInt(referDate.substring(0,4));
			Calendar ca=new GregorianCalendar(year,month-1,day);
			switch(type){
			case 0:
				ca.add(Calendar.DAY_OF_MONTH, datediff);
				break;
			case 1:
				ca.add(Calendar.MONTH, datediff);
				break;
			case 2:
				ca.add(Calendar.YEAR, datediff);
			case 3:
				ca.add(Calendar.WEEK_OF_YEAR, datediff);
				break;
			}
			
			return getDateFromCa(ca);
		}catch(Exception e){
			logger.warn("",e);
		}
		return null;
	}
	
	public static String getDateFromCa(Calendar ca){
		Date d = ca.getTime();
		SimpleDateFormat sd=new SimpleDateFormat("yyyyMMdd");
		return sd.format(d);
	}
	
	public static String getCurrentTime(){
		SimpleDateFormat sd=new SimpleDateFormat("yyyyMMddHHmmss");
		return sd.format(new Date()).substring(8);
	}
	
	public static String getFullCurrentTime(){
		SimpleDateFormat sd=new SimpleDateFormat("yyyyMMddHHmmssSSS");
		return sd.format(new Date());
	}
	
	public static long getlongtime(){
		return (new Date()).getTime();
	}
	
	/**
	 * 格式化字符串,右补空格
	 * @param s
	 * @param width
	 * @return
	 */
	public static String formateString(String s,int width){
		String format="%1$-"+width+"s";
		return String.format(format, s);
	}
	
	/**
	 * 格式化字符串,左补空格
	 * @param s
	 * @param width
	 * @return
	 */
	public static String RfillBlank(String s,int width){
		String format="%1$"+width+"s";
		return String.format(format, s);
	}
	
	public static String getPartitionKey(){
		SimpleDateFormat sd=new SimpleDateFormat("yyyyMM");
		return sd.format(new Date());
	}

	
	/**
	 * 测试用
	 * @param map
	 */
	public static void writeObject(Object request,String filename) {
		ObjectOutputStream out;
		try {
			out = new ObjectOutputStream(new FileOutputStream("data/"+filename+"-request.ser"));
			out.writeObject(request);
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 测试用
	 * @param map
	 */
	public static Object readObject(String filename) {
		ObjectInputStream in;
		File f = new File("data/"+filename+"-request.ser");
		if (!f.exists())
			return null;
		try {
			in = new ObjectInputStream(new FileInputStream("data/"+filename+"-request.ser"));
			Object ret = in.readObject();
			in.close();
			return ret;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;

	}
	
	/**
	 * 从文本生成hashmap对象
	 * @return
	 */
	public static  HashMap readFromText(){
		Properties p=new Properties();
		HashMap ret=new HashMap();
		try {
			p.load(new FileInputStream("test/hashmap.txt"));
		} catch (Exception e) {
			logger.warn("",e);
		}
		ret.putAll(p);
		return ret;
	}

	/**
	 * /**
	 * 填充数组到指定长度
	 * @param ret
	 * @param len
	 */
	public static byte[] fillByteLen(byte[] ret, int len) {
		byte[] subbyte=null;
		
		if(ret!=null&&len<ret.length){
			logger.warn("param:ret"+new String(ret));
			logger.warn("param:len"+len);
			return subByte(ret,0,len);
		}
		try{
			if(ret!=null){
				subbyte=new byte[len-ret.length];
			}else{
				subbyte=new byte[len];
			}
			
			for (int i = 0; i < subbyte.length; i++) {
				subbyte[i] = 0x20;
			}
			
			ret=mergeByte(ret,subbyte);
		}catch(Exception e){
			logger.warn("Error:",e);
			logger.warn("param:ret"+new String(ret));
			logger.warn("param:len"+len);
		}
		
		return ret;
		
		
	}
	
	//String.format("%03d",cmds[5].getBytes().length)
	/**
	 * 格式化数字,左补0
	 */
	public static String FomatNumber(int width,int data){
		String format="%0"+width+"d";
		return String.format(format, data);
	}

	/**
	 * 判断list为空
	 * @param l
	 * @return
	 */
	public static boolean AssertListEmpty(List l) {
		if(l==null||l.size()==0){
			return true;
		}else{
			return false;
		}
	}
	
}

分享到:
评论

相关推荐

    spring 3.0日常项目用到的jar

    标题 "spring 3.0日常项目用到的jar" 提供了我们正在讨论的是与Spring框架3.0版本相关的库,这些库在日常项目开发中是必不可少的。描述中提到了几个关键的模块,包括`commons-logging.jar`以及Spring框架的多个组件...

    util_format&inspect.pdf

    总结来说,util模块中的util.deprecate、util.format和util.inspect是Node.js开发中经常用到的工具函数,它们帮助开发者处理弃用警告、格式化输出以及对象信息的可视化。通过这些工具函数,开发者可以编写更加健壮、...

    springboot-util:Spring Boot 项目工具类,框架集成记录

    参考 的开源代码,修改了一部分,方便以后用到项目中去。 效果图 springboot-cors Spring Boot 结合 CORS 在服务端解决 AJAX 跨域问题的 demo。 1.使用 CorsConfiguration 配置 @Configuration public class ...

    记录每一次按下按钮的时间

    2. **时间戳记录**:记录按下按钮的时间,需要用到系统当前时间的获取和转换。大多数编程语言都有内置的函数来获取当前时间,例如在Python中可以使用`datetime.datetime.now()`,在Java中则是`java.util.Date`类。...

    util:各类项目中可能用到的方法

    "util:各类项目中可能用到的方法"是一个集合了各种实用函数的资源库,它旨在为开发者提供方便,帮助他们在不同项目中快速实现常见功能。这个库特别强调了使用ES6和ES7(即ES2015和ES2016)的新特性,这些新特性极大...

    常用工具类常用工具类.zip

    1. **Java.lang**: 这是Java平台中最基础的包,包含了所有Java程序都会用到的基本类,如`String`、`Integer`、`Math`等。`Math`类提供了许多数学计算的静态方法,如求平方根、最大值、最小值等。`System`类包含了与...

    java中用的各种类

    Java支持多语言环境,通过`java.util.ResourceBundle`和`java.text.MessageFormat`类实现国际化。资源文件(如messages.properties)用于存储不同语言的文本,程序根据用户的语言偏好加载相应的文件。 8. **邮件...

    hibernate所有用到的jar包

    10. **slf4j-api.jar**和相应的实现库(如slf4j-log4j12.jar):Simple Logging Facade for Java,提供一个简单的接口来调用各种日志框架,如log4j、java.util.logging等。 11. **mysql-connector-java.jar**(或...

    hibernate必须用到的jar

    2. slf4j-api-x.y.z.jar 和 slf4j-simple-x.y.z.jar:SLF4J(Simple Logging Facade for Java)是一个日志门面,为各种日志框架提供一个简单的抽象层,如Log4j、java.util.logging、Logback等。slf4j-api是SLF4J的...

    json需要用到的包

    6. **commons-logging-1.1.1.jar**:Apache Commons Logging是日志记录的抽象层,允许开发者选择底层的日志实现,如log4j或java.util.logging。在处理JSON过程中,如果遇到错误或需要调试,日志记录会非常有用。 7....

    dwr用到的相关jar包

    在DWR中, Commons Logging用于记录调试信息、错误和其他与DWR相关的日志事件。通过这个库,开发者可以根据项目需求调整日志级别和输出方式。 最后,`dwr.xml` 是DWR的配置文件,用于定义哪些Java类和方法可以被...

    上传文件工具类

    `java.util.logging`或`log4j`等日志框架可以用来记录上传过程中的信息和错误。Java的`try-catch-finally`语句块用于捕获和处理可能出现的异常,确保资源得到正确释放。 最后,如果这个工具类设计为可配置,那么它...

    java工具类

    对于多线程和并发处理,工具类可能包含线程安全的数据结构,如`java.util.concurrent`包下的类,或者提供线程池管理、定时任务执行等功能。 9. **异常处理**: 工具类可能提供通用的异常捕获和转换方法,以便在...

    使用json所需要用到的JAR包

    在处理JSON时,可能会遇到需要记录日志的情况,这个库提供了统一的接口,方便开发者选择合适的日志框架,如Log4j或java.util.logging。 以上JAR包组合在一起,为Java开发人员提供了一个完整的JSON处理环境,从解析...

    用java语言写的日历

    在Java 8之前,日期和时间的处理主要依赖`java.util.Date`和`java.util.Calendar`类,但这两个类的设计并不理想,存在一些不方便和效率低下的问题。因此,Java 8引入了新的`java.time`包,其中包括`LocalDate`、`...

    asp.net 通用Common类库

    1. **基础工具类**:Common类库中往往会有基础的工具类,如`StringUtil`用于字符串操作,`DateTimeUtil`处理日期时间,`IOUtil`处理文件和目录操作。这些工具类提供了一系列静态方法,方便在项目中调用,比如字符串...

    Java 删除项目里面的注释所用到的包.zip

    这个"Java 删除项目里面的注释所用到的包.zip"可能包含了一个或多个工具或库,专门用于自动化删除Java源代码中的注释。在进行这类操作时,需要注意一些关键点以确保代码质量和安全性。 首先,让我们了解一下为什么...

    android各种工具类

    在Android开发中,工具类是开发者经常会用到的辅助代码集合,它们可以帮助我们高效地处理各种常见任务。本文将深入探讨“android各种工具类”这一主题,包括文件操作、日期处理、图片处理、系统服务利用、网络通信...

    JAVA 视频工具类 可通过视频连接生成视频文件

    - **日志记录**:为了调试和问题排查,工具类可能整合了如Log4j或Java内置的`java.util.logging.Logger`来进行日志输出。 - **元数据处理**:对于视频文件,可能需要解析或设置元数据,如编码、分辨率、时长等,这...

    在jsp中可以用到的十分详细的 分页代码

    假设我们有一个包含1000条记录的列表,我们需要将其按照每页10条记录进行分页展示。我们可以这样使用 `Pagination` 类: ```java List data = ...; // 假设data是包含1000条记录的列表 Pagination pagination = new...

Global site tag (gtag.js) - Google Analytics