android将时间戳转为代表”距现在多久之前”的字符串

本文介绍了一种将Unix时间戳转换为易于理解的时间描述的方法,例如“几分钟前”、“几小时前”等,并提供了具体的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android将时间戳转为代表”距现在多久之前”的字符串

/**
 * 将时间戳转为代表"距现在多久之前"的字符串
 * @param timeStr   时间戳
 * @return
 */

public static String getStandardDate(String timeStr) {

    StringBuffer sb = new StringBuffer();

    long t = Long.parseLong(timeStr);
    long time = System.currentTimeMillis() - (t*1000);
    long mill = (long) Math.ceil(time /1000);//秒前

    long minute = (long) Math.ceil(time/60/1000.0f);// 分钟前

    long hour = (long) Math.ceil(time/60/60/1000.0f);// 小时

    long day = (long) Math.ceil(time/24/60/60/1000.0f);// 天前

    if (day - 1 > 0) {
        sb.append(day + "天");
    } else if (hour - 1 > 0) {
        if (hour >= 24) {
            sb.append("1天");
        } else {
            sb.append(hour + "小时");
        }
    } else if (minute - 1 > 0) {
        if (minute == 60) {
            sb.append("1小时");
        } else {
            sb.append(minute + "分钟");
        }
    } else if (mill - 1 > 0) {
        if (mill == 60) {
            sb.append("1分钟");
        } else {
            sb.append(mill + "秒");
        }
    } else {
        sb.append("刚刚");
    }
    if (!sb.toString().equals("刚刚")) {
        sb.append("前");
    }
    return sb.toString();
}

将Unix时间戳(long) → 普通时间?
String date = new java.text.SimpleDateFormat(“dd/MM/yyyy HH:mm:ss”).format(new java.util.Date(Unix timestamp * 1000))

### uniapp 中将日期字符串转换为时间戳 在uniapp开发环境中,为了确保兼容性和准确性,在不同操作系统上(如Android和iOS)正确地将日期字符串 `yyyy-MM-dd HH:mm:ss` 转换为时间戳,建议采用统一的方式处理日期格式化问题。 由于直接使用 JavaScript 的内置函数可能会遇到兼容性问题——特别是在 iOS 上对于连字符分隔的日期解析失败返回 NaN[^1] ——因此推荐先调整输入日期串中的连接符。具体做法如下: #### 解决方案一:替换日期分隔符 通过正则表达式或其他手段修改原始日期字符串内的 `-` 符号为 `/` ,从而使得所有平台都能一致识别该日期格式并成功计算出相应的时间戳。 ```javascript function convertToTimestamp(dateString) { const formattedDate = dateString.replace(/-/g, '/'); return new Date(formattedDate).getTime(); } console.log(convertToTimestamp('2022-4-30')); // 输出应为 1651248000000 或者更精确到毫秒级别的数值 ``` 这种方法简单有效,能够解决大部分情况下因为日期格式差异引起的问题[^2]。 #### 解决方案二:手动构建日期对象 另一种更为稳健的办法是完全避开依赖于浏览器默认行为来解释日期字符串的做法,而是显式指定年份、月份、天数等各个组成部分给新的 `Date()` 构造器实例。这不仅可以提高代码可读性,还能增强跨设备间的稳定性。 ```javascript function createTimestamp(year, month, day, hour=0, minute=0, second=0){ var dateObj = new Date(Date.UTC(year, month - 1, day, hour, minute, second)); return dateObj.getTime(); } // 使用示例 let timestamp = createTimestamp(2022, 4, 30); console.log(timestamp); // 同样应该得到接近 1651248000000 的结果 ``` 上述两种方法都可以有效地规避原生 `new Date(string)` 方法可能带来的不确定性,并且适用于大多数实际应用场景下的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值