Java中Long与String互相转换的正确方式及注意事项

向北走
向北走
发布时间:2026-10-16 | 4人浏览过
原创

本文将讲解Java中Long与String的转换方法,重点说明String转Long时需处理的格式限制与数值边界问题,并补充Date与毫秒值之间的转换逻辑。

Long与String的基础转换区别

在处理数字字符串时,Java提供了两种主要的解析方式,它们返回的数据类型不同:

  • Long.valueOf("String"):返回Long包装类型数据。
  • Long.parseLong("String"):返回long基本数据类型。

常见异常处理

在进行String向Long转换时,需特别注意以下两点,否则将抛出java.lang.NumberFormatException:

  1. 格式校验:字符串内不能包含除数字之外的字符(如空格、字母等),否则会直接报错。
  2. 长度与范围限制:字符串代表的数值必须在Long类型的取值范围内。默认最大值为Long.MAX_VALUE = 9223372036854775807,最小值为Long.MIN_VALUE = -9223372036854775808。若输入如"1234567899876543210000"这样超过19位且超出范围的数字,程序将会中断运行。

Date与Long、String的互转

在涉及时间戳的业务场景中,经常需要处理java.util.Date、long(毫秒/秒)和格式化String之间的转换。

1. Date 转 long

getTime()方法返回的是自1970年1月1日以来的毫秒数。若业务需要秒数,可将结果除以1000。

Date date = new Date();
// 获取毫秒数
System.out.println(date.getTime());
// 获取秒数
long mseconds = date.getTime() / 1000;

2. long 转 Date

如果传入的是秒数,必须先乘以1000还原为毫秒数,再实例化Date对象。如需特定格式输出,可配合SimpleDateFormat使用。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date = new Date(mseconds * 1000);
String str = sdf.format(date);
System.out.println(str);

3. 字符串日期与 CST 时间格式的解析

对于标准格式的时间字符串(如"2015-08-31 21:08:06"),通过sdf.parse(str)即可转换为Date对象并获取时间戳:

String str = "2015-08-31 21:08:06";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = (Date) sdf.parse(str);
System.out.println(date.getTime()); // 例如输出 1441026486000

当面对CST格式的文本(如"Wed Sep 16 11:26:23 CST 2009")时,需设置对应的Locale和解析模式:

String str = "Wed Sep 16 11:26:23 CST 2009";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
Date date = (Date) sdf.parse(str);

常用的日期处理工具类示例

基于上述操作,可封装一个实用的工具类以简化日常开发中的类型转换工作:

import java.text.*;
import java.util.*;

public class DateFormat {
    // 格式化 Date 为 String
    public static String dateFormat(Date date) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return formatter.format(date);
    }

    // 将 "2017-08-9 21:08:06" 转为 Date
    public static Date stringToDate(String str) throws ParseException{
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return (Date) formatter.parse(str);
    }

    // 将 CST 格式字符串转为标准格式 String
    public static String cstFormat(String str) throws ParseException{
        SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
        Date date = (Date) formatter.parse(str);
        return dateFormat(date);
    }

    // 将 long (秒) 转化为 Date
    public static Date longToDate(long timestamp) throws ParseException{      
        return new Date(timestamp * 1000);  
    }
}

以上就是Java中Long转String及时间类型转换的详细内容,更多关于Java数据类型转换的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表