比如下单之后要产生一个订单号,按年月日+四位随机数,不重复。请高人指点
解决方案 »
- 请教高手:Win7和IE9环境下,与IE控件相关的程序错误,如下题
- 类中如何用alert函数?
- struts2页面的显示问题
- 在线等!!显示在线用户的姓名,ID
- 求一 正则表达式
- 晕,晕,晕,java调用mysql数据库的存储过程就是不行,但我使用ms sql server 是没问题的
- 急救啊,跳转地址栏的问题
- ★●★●送分小问题,不回答后悔!
- 惊喜:刚发现的免费在线电影站,只要注册一下就可以看!速度超快,清晰度高,最新大片竟然都有。没有病毒!放心打开看吧!网址:http://w
- 一菜鸟的关于连接数据库SQLServer2000的问题
- NullPointerException 问题
- 时间格式转化
设一个参数=new Date()转为String+ random(10000)转为String
Date()显示的format可以自行设定
private String GenerateSerialNum(){
Double dRandom = new Double(10000*Math.random());
Integer iRandom = new Integer(dRandom.intValue()); String sSerialNum = rot13(CMyDateTime.now().toString("yyyyMMdd") + iRandom.toString()).toLowerCase();
return sSerialNum;
}
呃,精确到年月日,后加四位随机数订单,如果高并发,随机数可能会重复,就是存入数据库生成订单编号时查一下数据库也有可能会重复的(也就是从0000-9999名额有限...)
最好是精确到年月日时分秒+随机数,这样出现的可能性小一些...
insert 方法 事务控制就可以了
Date date = cal.getTime();
long timestamps = date.getTime() ;
public class CreateOrderId {
// 获得日期
public String getTimeStamp() {
String temp = null;
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMdd”);
temp = sdf.format(new java.util.Date());
return temp;
}
public String getOrderId() {
StringBuffer buf = new StringBuffer();
buf.append(this.getTimeStamp()); // 时间
Random rand = new Random();
for (int i=0;i<4;i++) { // 四位随机数
buf.append(rad.nextInt(10));
}
rturn buf.toString();
}
// 测试
public static void main(String args[]) {
CreateOrderId createOrderId = new CreateOrderId();
String orderid = createOrderId.getOrderId();
System.out.println(orderid);
}
}
但是长的要有意义
public class UID { //定义一个最大增长数
private static final int MAX_COUNT = 99999;
//定义用于递增的参数
private static int generateCount = 0; /**
* 获取唯一的UID号
*
*
* @return 14-18位的唯一UID号
*/
public static synchronized String getUID() { if (generateCount > MAX_COUNT)
generateCount = 0;
String uniqueNumber = Long.toString(System.currentTimeMillis())
+ Integer.toString(generateCount);
generateCount++; //假如超过32位的话,只取后32位
if (uniqueNumber.length() > 32) {
uniqueNumber = uniqueNumber.substring(uniqueNumber.length() - 32);
} return uniqueNumber;
}}
* 获取用户的唯一表示序列号
*/
public static String GetPlayerIndex()
{
String strindex = "";
Random random = new Random();
for( int i=0;i<18;i++ )
{
int rand = GetRandomValue(0, 1);
if( rand == 0 )
{
//字母
int choice = random.nextInt(2) % 2 == 0 ? 65 : 97; //取得大写字母还是小写字母
strindex += (char) (choice + random.nextInt(26));
}
else if( rand == 1 )
{
//数字
strindex += GetRandomValue(1, 11);
}
}
//判断生成的随机数是否重复
if( PlayerIndexList.isSame( strindex ) )
GetPlayerIndex();
return strindex;
}
正好自己有写的一个差不多的类