String 转 Date

String classCode = RequestHandler.getString(request, "classCode");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
DicClassInfo classInfo=new DicClassInfo();
classInfo.setStartDate(sdf.parse(startDate));

int型除法保留两位小数/求百分比

int openCount = temp.getIsOpenCount();
int passCount = temp.getIsPassCount();
double k = (double)passCount/openCount*100;
java.math.BigDecimal big = new java.math.BigDecimal(k);
String l =big.setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue() +"%";

float保留两位小数

//1
float f = 34.232323;
BigDecimal b = new BigDecimal(f);
float f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
// b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数 //2
float scale = 34.236323;
DecimalFormat fnum = new DecimalFormat("##0.00");
String dd=fnum.format(scale);
System.out.println(dd); //3
float a = 123.2334f;
float b = (float)(Math.round(a*100))/100;

BigDecimal保留两位小数

//金额保留小数后两位
BigDecimal b = invoiceTemp.getInvoicePrice();
BigDecimal setScale = b.setScale(2,BigDecimal.ROUND_DOWN);
invoiceTemp.setInvoicePrice(setScale);

参数定义

ROUND_CEILING 向正无穷方向舍入 

ROUND_DOWN 向零方向舍入 

ROUND_FLOOR 向负无穷方向舍入 

ROUND_HALF_DOWN 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 

ROUND_HALF_EVEN 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP
,如果是偶数,使用ROUND_HALF_DOWN 

ROUND_HALF_UP 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入,
1.55保留一位小数结果为1.6 

ROUND_UNNECESSARY 计算结果是精确的,不需要舍入模式 

ROUND_UP 向远离0的方向舍入

Action文件mapping.findForward()动态传参至Struts-config.xml

//后台方法
return mapping.findForward(outSystemSign); //配置文件无需判断,直接接收,直接写明映射内容即可
<forward name="qgtzsbcjh" path="/WEB-INF/jsp/outsystem/kpflowchart/qgtzsbcjh.jsp"/>
<forward name="gusuwx" path="/WEB-INF/jsp/outsystem/kpflowchart/gusuwx.jsp"/>

isBlankisEmptyisNull

org.apache.commons.lang.StringUtils类提供了String的常用操作,最常用判空如下

  • StringUtils.isEmpty(String str)
//判断某字符串是否为空,标准是 str==null 或 str.length()==0
System.out.println(StringUtils.isEmpty(null)); //true
System.out.println(StringUtils.isEmpty("")); //true
System.out.println(StringUtils.isEmpty(" ")); //false
System.out.println(StringUtils.isEmpty("dd")); //false
  • StringUtils.isNotEmpty(String str) 等价于 !isEmpty(String str),判断是否不为空也不为null,在要替换字段为空串时,应使用isNotNull,isNotEmpty会自动跳过
  • StringUtils.isBlank(String str),StringUtils.isNotBlank(String str) 等价于 !isBlank(String str)
//判断某字符串是否为空或长度为0或由空白符(whitespace) 构成System.out.println(StringUtils.isBlank(null));     //true
System.out.println(StringUtils.isBlank("")); //true
System.out.println(StringUtils.isBlank(" ")); //true
System.out.println(StringUtils.isBlank("dd")); //false

时间段控制(00:00:00—23:59:59)

if(null!=startDate){
int len = startDate.length();
switch(len){
case(10):startDate = startDate + " 00:00:00.000";break;
case(19):startDate = startDate + ".000";break;
   default:if(len>10){startDate = startDate.substring(0,10)+"00:00:00.000";}break;
}
} if(null!=endDate){
int len = endDate.length();
switch(len){
case(10):endDate = endDate + " 23:59:59.999";break;
case(19):startDate = startDate + ".999";break;
default:if(len>10){startDate = startDate.substring(0,10)+"23:59:59.999";}break;
}
}

计算时间差

String date = "2010-01-01 11:11:11";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String nowDate = df.format(new Date());
Date d1 = df.parse(date);
Date d2 = df.parse(nowDate);
long between = (d2.getTime() - d1.getTime())/1000; //时间差(秒)

获取指定时间

//当前月第一天
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.set(5, 1);
Date startMonthDate =c.getTime();
String startMonthStr = dateToString(startMonthDate , "yyyy-MM-dd 00:00:00"); //当前月最后一天
Calendar calendar = Calendar.getInstance();
calendar.setTime(startMonthDate );
calendar.add(2, n);
Date endMonthDate=calendar .getTime();
String endMonthStr = dateToString(endMonthDate, "yyyy-MM-dd 00:00:00"); //七天前
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 7);
Date earlySevenDate = calendar.getTime();
String earlySevenStr = dateToString(earlySevenDate, "yyyy-MM-dd 00:00:00"); //当天
String todayStr = dateToString(new Date(), "yyyy-MM-dd 00:00:00"); //Date date, int n date时间加n天
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(5, n);
Date nDayLaterDate = calendar.getTime();
String earlySevenStr = dateToString(nDayLaterDate, "yyyy-MM-dd 00:00:00"); //Date date, int n date时间加n月
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(2, n);
Date nMonthLaterDate = calendar.getTime();
String earlySevenStr = dateToString(nMonthLaterDate, "yyyy-MM-dd 00:00:00"); public static String dateToString(Date date, String pattern) {
if (date != null) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
} else {
return "";
}
} //Calendar的add()方法:1是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作。

String数组、List转换

// List转String数组
List<String> list = new ArrayList<String>();
list.add("a1");
list.add("a2");
String[] toBeStored = list.toArray(new String[list.size()]); for(String s : toBeStored) {
  System.out.println(s);
} //String数组转List
String[] arr = new String[] {"1", "2"};
List<String> list = Arrays.asList(arr);

excel导出合并单元格(行)、设置样式   

<%@page import="org.apache.poi.hssf.util.Region"%>
<%@page import="org.apache.poi.hssf.usermodel.HSSFFont"%>
<%@page import="org.apache.poi.hssf.util.HSSFColor"%> HSSFCellStyle cellStyle = wb.createCellStyle();//新样式//居中
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //居中
HSSFFont font=wb.createFont();
font.setColor(HSSFColor.RED.index);//字体颜色
font.setFontHeightInPoints((short)12);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//字体增粗
cellStyle.setFont(font);//把字体应用到当前的样式
cell.setCellStyle(cellStyle);
//合并第(0,0)单元格到第(0,13)单元格
sheet.addMergedRegion(new Region(0, (short)0, 0, (short)13));
if(0 != total){
  cell.setCellValue("支付金额合计 : "+total+"元");
}

excel动态合并单元格(列)

short num = 1;  //列
String s = "";
//sheet.getLastRowNum()获取总行数
for (int k = 1; k <= sheet.getLastRowNum(); k++) {
HSSFRow rows = sheet.getRow(k);
HSSFCell cells = rows.getCell((short)2);
if (cells.getStringCellValue().equals(s)) {
sheet.addMergedRegion(new Region(num,(short)2,k,(short)2));
HSSFRow rowsV = sheet.getRow(k);
HSSFCell cellsV = rows.getCell((short)2);
cellsV.setCellStyle(style);
} else {
num =(short) k;
}
s = cells.getStringCellValue();
}

java小技巧的更多相关文章

  1. Java 小技巧和在Java避免NullPonintException的最佳方法(翻译)

                前几天就g+里面看到有人引用这篇博文.看了一下.受益颇多. 所以翻译过来,希望和大家一起学习.本人英语水平有限,假设有错,请大家指正. 原文地址(须要翻墙):http://ja ...

  2. Java小技巧输出26个英文字母

    相信有的童鞋写到过与字母有关的小东西,是否有写过全部的字母呢?26个这么多字母,一个个打会疯掉.所有咱们可以用一个小技巧使用for循环帮我们把26个字母自动搞出来,大家来瞅一眼把! 使用Java遍历2 ...

  3. java小技巧-生成重复的字符

    今天碰到个需求,根据字段个数,动态生成sql的占位符,如下: public static void main(String[] args) { System.out.println(String.jo ...

  4. java小技巧:如何分批次导入大量数据

    //List 需要导入的数据int count = 1000;//每批次导入的数目int Lastindex = count;List<List<T>> shareList = ...

  5. Java小技巧:怎么循环日期?

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try{//起始日期Date start = sdf.parse ...

  6. Java在处理大数据的时候一些小技巧

    Java在处理大数据的时候一些小技巧 发布时间:2013-05-09 00:00:00 来源:中国IT实验室 作者:佚名   关键字:Java 众所周知,java在处理数据量比较大的时候,加载到内存必 ...

  7. Java内存管理的9个小技巧

    Java内存管理的9个小技巧很多人都说“Java完了,只等着衰亡吧!”,为什么呢?最简单的的例子就是Java做的系统时非常占内存!一听到这样的话,一定会有不少人站出来为Java辩护,并举出一堆的性能测 ...

  8. java.text.MessageFormat格式化字符串时的小技巧

    java.text.MessageFormat格式化字符串时的小技巧 public static void main(String[] args) throws InterruptedExceptio ...

  9. 关于Java内存管理的几个小技巧

    这里将介绍几则Java内存管理的小技巧,让你让你从Java入门开始告别陋习,为Java程序提速.有不少人都说"Java完了,只等着衰亡吧!",为什么呢?最简单的的例子就是Java做 ...

随机推荐

  1. [LeetCode]100. Same Tree判断树相同

    dfs遍历一下判断 public boolean isSameTree(TreeNode p, TreeNode q) { if (p==null) { return q == null; } els ...

  2. SQL数据库创建,创建表,增删改查

    创建数据库:create datebase数据库名 删除数据库:drop datebase 数据库名称 创建表格式: create table 表名(字段名1,字段类型1,字段名2,字段类型2) 查询 ...

  3. 第四章节 BJROBOT 线速度校正 【ROS全开源阿克曼转向智能网联无人驾驶车】

    BJROBOT 线速度校正   1.把小车平放在地板上,用卷尺作为测量刻度,选取车头或者车尾处作为小车的起点, 打开资料里的虚拟机,打开一个终端 ssh 过去主控端启动 roslaunch znjro ...

  4. 2020再见&新的计划(建立Android体系架构)

    2020,再见 关于2020,我心中有四个关键词: 疫情 年初突如其来的疫情,打破了原本生活的节奏,也没想到会笼罩全世界整整一年,希望这个世界早点好起来吧. 科比 初三的早晨,噩耗传来,我一度不敢相信 ...

  5. 腾讯IOT之树莓派物联网设备

    目录 腾讯IOT之树莓派物联网设备 硬件配置 软件配置 Tecent IOT 开发平台的使用 新建项目 新建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 在线调试 设备 ...

  6. NTP服务解析

    ······[NTP服务概述] NTP(Network Time Protocol)服务主要用于同步服务器时间. nptd 可以运行在多种模式下,包括对称的 主动.被动(active/passive) ...

  7. go mod 拉取私有仓库

    前言 如果代码中依赖了本地的包, 这个包是托管在内网 Gitlab 中, 而且不是 HTTPS 服务,那么应该怎样使用 go mod 拉取代码呢? 本文会给你我的答案 正文 首先我们要知道, 如果本地 ...

  8. Java远程下载文件到本地(http协议和ssh2协议)

    Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现.前段时间遇到了以下两种需求: 1.与某系统对接,每天获取最新的图片并显示在前端页面.该系 ...

  9. 十一:WEB渗透必懂知识点

    简述WEB层面上的漏洞以及类型,具体漏洞的危害等级, 如何形成以及如何发现 右边权重大于左边 CTF,SRC,红蓝对抗,实战 简要说明以上漏洞危害 简要说课以上漏洞等级划分 简要说明以上漏洞重点内容 ...

  10. [CPP] 智能指针

    介绍 C++ 的智能指针 (Smart Pointers) 相关 API. C++ 中的智能指针是为了解决内存泄漏.重复释放等问题而提出的,它基于 RAII (Resource Acquisition ...