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;
}
這樣你要多少流水號就設定成多少就行了。