package cn.com.ty.lift.ud.utils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

public class UUIDUtil {

    public static void main(String[] args) {

        for (int l = 0; l < 100; l++ ) {
            System.out.println(numLength(6));// 生成6位的随机数
        }
    }

    static final char[] STR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

    /**
     * 获取基于时间的UUID,随机位9位小数.
     */
    public static String getUuidByTime9() {
        return getUuidByTime(9);
    }

    /**
     * 获取基于时间的UUID.
     */
    public static String getUuidByTime(int cardLen) {
        DateFormat format2 = new SimpleDateFormat("yyyyMMddHHmmss");
        return format2.format(new Date()) + genRandomNum(cardLen);
    }

    /**
     * 获取指定长度的随机数组长度.
     */
    public static String genRandomNum(int cardLen) {
        // 35是因为数组是从0开始的，26个字母+10个数字
        final int maxNum = 36;
        int i; // 生成的随机数
        int count = 0; // 生成的密码的长度
        StringBuffer pwd = new StringBuffer("");
        Random r = new Random();
        while (count < cardLen) {
            // 生成随机数，取绝对值，防止生成负数
            i = Math.abs(r.nextInt(maxNum)); // 生成的数最大为36-1
            if (i >= 0 && i < STR.length) {
                pwd.append(STR[i]);
                count++ ;
            }
        }
        return pwd.toString();
    }
    
    /**
     * 获取指定长度的数字
     * @param num
     * @return
     */
    public static String numLength(int num) {
        String[] vec = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
        num = num <= 0 ? 1 : num;
        StringBuffer str = new StringBuffer(10);
        for (int i = 0; i < num; i++) {
            int r1 = Long.valueOf(Math.round(Math.random() * (vec.length - 1))).intValue();
            str.append(vec[r1]);
        }
        return str.toString();
    }
}
