Java中Long、String、Date 类型之间的转换

本文详细介绍了Java中日期类型与long类型之间的转换方法,包括如何将java.util.Date类型转换为long类型,以及如何将long类型转换回Date类型,并提供了具体的代码示例。此外,文章还演示了如何将不同格式的string类型转换为java.util.Date类型。

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

本文题材比较简单,仅仅作为自己的个人笔记,以备不时之需。今天拿到一个long类型的值,想要转化成Date类型,一时却想不起来,看样子记笔记还是必须的啊!

(1)java.util.Date类型转换成long类型
不要唠叨了,还是先上代码

            Date date=new Date();
            System.out.println(date.getTime());

解析:其中getTime()返回为long类型,长度为13,表示毫秒;如果想获得秒数,只需要除以1000即可。

long mseconds=date.getTime()/1000;

(2)long类型转换成java.util.Date类型

            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);

前面的mseconds是表示的是秒数,所以要先乘1000得到毫秒数,再转为java.util.Date类型,这样就完成了long到Date的转化;为了格式化输出Date,可以调用SimpleDateFormat的format方法格式化输出Date

(3)形如“2015-08-31 21:08:06”等格式化string类型转换成java.util.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,此时同样可以用SimpleDateFormat的parse解决

            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);

备注(util类):

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



public class DateFormat {

    /**
     * date类型进行格式化输出
     * @param date
     * @return
     */
    public static String dateFormat(Date date) {
          SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          String dateString = formatter.format(date);
          return dateString;
     }

    /**
     * 将"2015-08-31 21:08:06"型字符串转化为Date
     * @param str
     * @return
     * @throws ParseException
     */
    public static Date StringToDate(String str) throws ParseException{
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = (Date) formatter.parse(str);
        return date;
    }

    /**
     * 将CST时间类型字符串进行格式化输出
     * @param str
     * @return
     * @throws ParseException
     */
    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
     * @param str
     * @return
     * @throws ParseException
     */
    public static Date LongToDare(long str) throws ParseException{      
        return new Date(str * 1000);  
    }

}
<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`,避免过时方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值