取得年月日小時分秒+多位流水號的序列號

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;
     }

這樣你要多少流水號就設定成多少就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章