ZSET缓存中score的生成方法


 //日期格式:yyyy-MM-dd HH:mm:ss
    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
 //系统运行最大日期 
    public static final String STRING_END_DATE = "2047-12-31 23:59:59";
 //系统运行最小日期
    public static final String STRING_START_DATE = "2017-08-01 00:00:00";
    /**
     * @Title: getScore
     * @Description: 获得Score
     * @param sortNo 排序号
     * @param sortTime 排序时间
     * @param order 排序方式(1:降序,0升序)
     * @return score
     */
    public static double getScore(String sortNo, Timestamp sortTime, int order) {

        double result = -1;
        try {
            // 排序以1开始
            StringBuilder scoreStr = new StringBuilder("1");
            // sort 未入力时为000
            if (StringUtils.isNoneEmpty(sortNo)) {
                scoreStr.append(StringFormat.padRight(String.valueOf(sortNo),
                        3, '0'));
            } else {
                scoreStr.append("000");
            }

            // 统一时间格式(数据库保存时会舍弃毫秒造成精度丢失)
            DateFormat formator = new SimpleDateFormat(DATE_FORMAT);
            String updateTimeStr = formator.format(sortTime);
            long time = formator.parse(updateTimeStr).getTime();

            long score = -1;
            if (1 == order) {
                // 降顺
                Date maxDate = DateUtil.strParceDate(STRING_END_DATE);
                score = maxDate.getTime() - time;
            } else {
                // 升顺
                Date minDate = DateUtil.strParceDate(STRING_START_DATE);
                score = time - minDate.getTime();
            }

            // 补足12位
            scoreStr.append(StringFormat.padRight(String.valueOf(score), 12,
                    '0'));
            result = Double.valueOf(scoreStr.toString());
        } catch (ParseException e) {
            e.printStackTrace();
            Logger.getLogger().info(
                    "sort生成失败: sortNo:" + sortNo + " sortTime:"
                            + sortTime.toString() + " order:" + order
                            + " 失败信息:" + e.getMessage());
        }

        return result;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值