Java中Long与String互相转换的正确方式及注意事项
本文将讲解Java中Long与String的转换方法,重点说明String转Long时需处理的格式限制与数值边界问题,并补充Date与毫秒值之间的转换逻辑。
Long与String的基础转换区别
在处理数字字符串时,Java提供了两种主要的解析方式,它们返回的数据类型不同:
Long.valueOf("String"):返回Long包装类型数据。Long.parseLong("String"):返回long基本数据类型。
常见异常处理
在进行String向Long转换时,需特别注意以下两点,否则将抛出java.lang.NumberFormatException:
- 格式校验:字符串内不能包含除数字之外的字符(如空格、字母等),否则会直接报错。
- 长度与范围限制:字符串代表的数值必须在
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数据类型转换的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













