免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 荒野狐狸
打印 上一主题 下一主题

将当前时间转换成一个字符串(6个字符),大家给点思路 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-08-06 14:12 |只看该作者
原帖由 libin1983 于 2007-8-6 13:28 发表
6位太少了吧,
一小时3600秒, 一天 86400秒, 12天就用完了.  不如用数据库生成  sequences
select to_char(sysdate, 'yyyymmddhh24miss')||(lpad(seq_xx.nextval, 6, '0')) from dual;



oracle语法...为什么不用数据库呢??还能支持并发控制...多好

论坛徽章:
0
12 [报告]
发表于 2007-08-06 15:16 |只看该作者
不能用符号肯定不够.

0-9a-zA-Z 总共 62种字符,相当 6位62进制的数,有多大自己算一下就清楚了.

62^6 = ??? 56800235584 (约35.5bit)

其中关于时间表示可以这样,假设您的程序开发发布时间是 2007-08-05 ,那么数据库中只记录插入时间与这个时间的距离,缺省的 time() 计算的是与 1970的距离,这样可能数会小一点,还要记毫秒的话你算算看看够不够

毫秒最大 999 那么可以用 10bit 来记录,还有 25bit来记录时间距离....

论坛徽章:
0
13 [报告]
发表于 2007-08-06 15:22 |只看该作者
這不就是哈希么......

论坛徽章:
0
14 [报告]
发表于 2007-08-06 16:24 |只看该作者
原帖由 hightman 于 2007-8-6 15:16 发表
不能用符号肯定不够.

0-9a-zA-Z 总共 62种字符,相当 6位62进制的数,有多大自己算一下就清楚了.

62^6 = ??? 56800235584 (约35.5bit)

其中关于时间表示可以这样,假设您的程序开发发布时间是 2007-0 ...

恩,62进制~~
偶忘记了还有大写字母鸟

论坛徽章:
0
15 [报告]
发表于 2007-08-06 16:55 |只看该作者
原帖由 Mart1n 于 2007-8-6 11:13 发表
把时间转换成毫秒,可以表示几千年。

一年是 1000*60*60*24*(约)366 = 31622400000毫秒
6位ASCII可以表示 256^6 = 281474976710656毫秒

281474976710656 / 31622400000 = 8901年

...


啊,少算一个条件!!
62进制,6位ASCII可以表示 62^6 = 56800235584毫秒

56800235584 / 31622400000 = 1.7962年

如果一一对应,只能表示一年多。

再加一位即可表示100多年。

[ 本帖最后由 Mart1n 于 2007-8-6 17:26 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP