static long m_sysno = 1;
// 取得日期
private static String getDate() {
String result = null;
Date date = new Date();
DateFormat format;
format = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
result = format.format(date);
int head=result.indexOf("-");
int end =result.lastIndexOf("-");
String y = result.substring(0,head);
String m= result.substring(head+1,end);
String d = result.substring(end+1);
if(m.length()==1) m = "0"+m;
if(d.length()==1) d = "0"+d;
result = y+m+d;
return result;
}
// 取得小时分秒
private static String getTime() {
String result = null;
Date date = new Date();
DateFormat format;
format = DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA);
result = format.format(date);
int head = result.indexOf(":");
int end = result.lastIndexOf(":");
String hh = result.substring(0,head);
String mm = result.substring(head+1,end);
String ss = result.substring(end+1);
if(hh.length()==1) hh = "0" + hh;
if(mm.length()==1) mm = "0" + mm;
if(ss.length()==1) ss = "0" + ss;
result = hh + mm + ss;
return result;
}
// 取得流水号(受理号)
private static String getNumber(long n) {
String result = null;
NumberFormat format = NumberFormat.getNumberInstance();
format.setMinimumIntegerDigits(6);
String nf = format.format(n);
result = nf.substring(0,3);
return result;
}
//取得序列号,年月日小时分秒+6位流水号
private static String getNo(long sysno)
{
String result = null;
result = getDate()+ getTime() + getNumber(sysno);
m_sysno = m_sysno+1;
return result;
}
注意,其中相关知识:
str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str;
str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str;
有关numberformat
如果您来自美国,您会在较大的数值中间放置逗号来表示千和百万(等等,每三个数值使用一个逗号)。对于浮点数,您将在整数部分和小数部分之间放置小数点。对于金钱,货币符号 $ 放在金额的前面。如果 您从来没有到过美国以外的地方,可能就不会关心用英镑(£)来格式化的英国货币,或者用欧元(?)来表示的其他欧洲国家的货币。
对于那些我们确实关心的货币,我们可以使用 NumberFormat 及其相关的类来格式化它们。开发人员使用 NumberFormat 类来读取用户输入的数值,并格式化将要显示给用户看的输出。
在Java的I/O里,并没有所谓的型别,不管是int、long、double…最后都是以String输出,所以如果要让数字以特定格式输出,需透过Java提供的两个类别java.text.NumberFormat和java.text.DecimalFormat将数字格式化后再输出。
在开始使用NumberFormat时,应先用getInstance取得NumberFormat的实体,范例12中的setMaximumIntegerDigits和setMinimumFractionDigits是用来设定整数和小数的位数,另外还有setMinimumIntegerDigits和setMaximumFractionDigits也是同样功能。这些设定如有冲突,Java以最后设定的为准。
import java.text.*;
public class myFormat {
public myFormat() {
NumberFormat nf = NumberFormat.getInstance();
double dblNum = Math.PI;
System.out.println(dblNum);
nf.setMaximumIntegerDigits(5);
nf.setMinimumFractionDigits(4);
System.out.println("PI: " + nf.format(dblNum));
}
public static void main(String[] args) {
myFormat myFormat1 = new myFormat();
}
}
或者你觉得上面的方法不好用,不要格式化,那么可以用以下方法代替getNumber方法:
private static String getNumber(long n) {
String result = "";
String nf = String.valueOf(n);
int len = nf.length();
if ((6-len)>0){
for (int i=0;i<(6-len);i++){
result +="0";
}
}
result = result+nf;
//System.out.println(result);
return result;
}
这样你要多少流水号就设定成多少就行了。