java 中String ,Date,long 和Timestamp类型的转换

本文介绍如何在Java中实现String、Date、Timestamp及long类型之间的相互转换,并提供了详细的代码示例。

一、String与Date(java.util.Date)的转换

   1、String--->Date

    String str="2014/1/11 12:34:25";

    Date date=new Date();

    DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  //这里规定时间的格式要与String时间类型的格式相同

    date=sdf.parse(str);//date类型

  2、Date--->String

    Date date=new Date();

    DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  //Date转String时,这里的格式随意

    String tr=sdf.format(date);

二、String与Timestamp的转换

  1、String--->Timestamp

      String str="2014/1/11 12:34:25";

      Timestamp ts=new Timestamp();

      ts=Timestamp.valueOf(str);

  2、Timestamp--->String

      方法一:

      Timestamp ts=new Timestamp(System.currentTimeMillis());

      String str=ts.toString();

      方法二:

      DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  

      String str=sdf.format(ts);

三、Date(java.util.Date)与Timestamp的转换

  1、Timestamp--->Date

      Timestamp ts=new Timestamp(System.currentTimeMillis());

      Date date=new Date();

      date=ts;

  2、Date--->Timestamp

      父类不能直接转换成子类,可以先转成String后,在转Timestamp

      Date date=new Date();

      Timestamp ts=new Timestamp(date.getTime());

四、long与Timestamp的转换

  1、long--->Timestamp

      long l="";

      new Timestamp(l);

  2、Timestamp--->long

      Timestamp ts=new Timestamp();

      long now=ts.getDateTime();

      

转载于:https://www.cnblogs.com/hujunli90/p/3515185.html

<think>好的,我现在要解决用户的问题,如何将Java中的String类型转换Long类型。首先,我需要回忆Java中处理类型转换的常用方法。记得有几种方式,比如使用Long类的静态方法,或者用Long的构造函数,还有可能涉及到异常处理。 用户提到了示例及方法,所以我需要给出具体的代码示例。首先,最基本的方法应该是使用Long.parseLong(),这个方法可以将字符串解析为long基本类型,然后再装箱为Long对象。比如Long.parseLong("123")会得到long类型的123,然后赋值给Long变量。 接下来,另一个方法是使用Long.valueOf(),这个方法也会返回Long对象,可能内部调用了parseLong,不过需要确认一下两者的区别。记得parseLong返回基本类型,而valueOf返回Long对象,但Java有自动装箱,所以可能效果差不多,不过最好明确说明。 还有一种可能已经被废弃的方法是使用new Long(String)构造函数,但根据Java版本的不同,可能已经不推荐使用了。比如在较新的JDK中,构造函数可能被标记为过时,应该用valueOf代替,因为可能更好的利用缓存,提高性能。 然后,我需要考虑异常处理的问题,比如当字符串无法转换Long时,会抛出NumberFormatException。所以,在示例代码中应该提醒用户处理这个异常,使用try-catch块来捕获可能的错误,避免程序崩溃。 用户提供的引用中提到了SimpleDateFormat解析时间字符串的情况,但用户的问题是关于直接将数字字符串Long,比如"1234"成1234L。不过需要明确区分时间字符串转换纯数字字符串转换的不同。用户的问题可能是指后者,但需要确认引用中的信息是否相关。例如,引用1中的例子是将时间字符串为时间戳的Long,这需要用到日期解析,而用户的问题可能是一般数字字符串转换。所以需要分情况讨论。 现在,我应该分点列出不同的方法,并给出示例代码。例如: 1. 使用Long.parseLong()方法,返回基本类型long,然后自动装箱为Long。 2. 使用Long.valueOf()方法,直接返回Long对象。 3. 避免使用已过时的构造函数new Long(String)。 同时,需要提到异常处理的重要性,以及如何处理无效的输入字符串。比如,当字符串包含非数字字符、超出Long范围或者为null时,会抛出异常。 另外,用户提供的引用中有提到时间字符串Long的情况,可能用户的实际需求中可能涉及时间转换,但问题明确询问的是StringLong类型,所以可能需要补充说明,如果字符串是时间格式,比如"2023-10-01",则需要先解析为Date,再获取时间戳的Long值,如引用中的例子。这可能是一个相关的扩展点,需要作为注意事项或附加方法提及。 总结步骤: 1. 分析用户问题:明确用户需要将数字字符串Long类型,可能还涉及时间字符串的情况。 2. 列出常用方法:parseLong、valueOf、构造函数(不推荐)。 3. 提供示例代码,展示每种方法的用法。 4. 强调异常处理的重要性。 5. 区分普通数字字符串时间字符串的不同处理方法。 6. 根据用户提供的引用,补充时间转换的例子,但明确指出这是另一种情况。 7. 注意事项,如输入有效性、性能考虑等。 现在需要确保代码示例正确,语法无误。例如,使用Long.parseLong时,如果字符串是"123a",会抛出异常,需要捕获。另外,对于大写的字母如十六进制的情况,可能需要指定基数,但默认是十进制,所以需要明确说明。 另外,注意Long的范围,如果字符串超过Long的最大值或最小值,也会导致异常,需要处理。 最后,生成相关问题,可能涉及类型转换的其他方面,比如异常处理、性能比较、不同方法的区别,或者反向转换LongString)的方法,如用户引用中提到的。</think>在Java中将String类型转换Long类型主要有以下几种方法,需注意数值格式的有效性异常处理: ### 方法1:使用`Long.parseLong()` 将字符串解析为基本类型`long`,再通过自动装箱为`Long`对象: ```java String str = "12345"; try { Long number = Long.parseLong(str); // 返回long,自动装箱为Long System.out.println(number); // 输出12345 } catch (NumberFormatException e) { System.out.println("无效的数值格式"); } ``` ### 方法2:使用`Long.valueOf()` 直接返回`Long`对象,内部调用`parseLong`并缓存常用值: ```java String str = "9876543210"; try { Long number = Long.valueOf(str); // 直接返回Long对象 System.out.println(number); // 输出9876543210 } catch (NumberFormatException e) { System.out.println("转换失败"); } ``` ### 方法3(不推荐):`new Long(String)`构造函数 Java 9+已标记此构造函数为过时,建议用`valueOf`替代: ```java String str = "-456"; Long number = new Long(str); // 编译警告:Deprecated ``` ### 附加场景:时间字符串Long时间戳 若字符串表示时间(如`"2023-10-01 12:00:00"`),需先解析为`Date`再获取时间戳: ```java String timeStr = "2023-10-01 00:00:00"; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Long timestamp = sdf.parse(timeStr).getTime(); // 为时间戳 } catch (ParseException e) { System.out.println("时间格式错误"); } ``` ### 注意事项 1. **异常处理**:无效格式(如含字母、空值)会抛出`NumberFormatException`,必须用`try-catch`处理[^1]。 2. **数值范围**:字符串需在`Long.MIN_VALUE`到`Long.MAX_VALUE`之间($-9,223,372,036,854,775,808$至$9,223,372,036,854,775,807$)。 3. **性能**:优先使用`parseLong`或`valueOf`,避免过时方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值