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

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

这样你要多少流水号就设定成多少就行了。

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