`
xiaoshiyier
  • 浏览: 3522 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 字符串转时间,支持多种格式

阅读更多

 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringToDateUtil {
    public static final Map<Integer, Character> charMap = new HashMap<Integer, Character>();
    public static final Pattern p = Pattern.compile("^(\\d+)\\D*(\\d*)\\D*(\\d*)\\D*(\\d*)\\D*(\\d*)\\D*(\\d*)");

    static {
        charMap.put(1, 'y');
        charMap.put(2, 'M');
        charMap.put(3, 'd');
        charMap.put(4, 'H');
        charMap.put(5, 'm');
        charMap.put(6, 's');
    }

    /**
     * 任意日期字符串转换为Date,不包括无分割的纯数字(13位时间戳除外) ,日期时间为数字,年月日时分秒,但没有毫秒
     *
     * @param dateString 日期字符串
     * @return Date
     */
    public static Date stringToDate(String dateString) {
        dateString = dateString.trim().replaceAll("[a-zA-Z]"," ");
        if(Pattern.matches("^[-+]?\\d{13}$",dateString)) {//支持13位时间戳
            return new Date(Long.parseLong(dateString));
        }
        Matcher m = p.matcher(dateString);
        StringBuilder sb = new StringBuilder(dateString);
        if (m.find(0)) {//从被匹配的字符串中,充index = 0的下表开始查找能够匹配pattern的子字符串。m.matches()的意思是尝试将整个区域与模式匹配,不一样。
            int count = m.groupCount();
            for (int i = 1; i <= count; i++) {
                for (Map.Entry<Integer, Character> entry : charMap.entrySet()) {
                    if (entry.getKey() == i) {
                        sb.replace(m.start(i), m.end(i), replaceEachChar(m.group(i), entry.getValue()));
                    }
                }
            }
        } else {
            System.out.println("错误的日期格式");
            return null;
        }
        String format = sb.toString();
        SimpleDateFormat sf = new SimpleDateFormat(format);
        try {
            return sf.parse(dateString);
        } catch (ParseException e) {
            System.out.println("日期字符串转Date出错");
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将指定字符串的所有字符替换成指定字符,跳过空白字符
     *
     * @param s 被替换字符串
     * @param c 字符
     * @return 新字符串
     */
    public static String replaceEachChar(String s, Character c) {
        StringBuilder sb = new StringBuilder("");
        for (Character c1 : s.toCharArray()) {
            if (c1 != ' ') {
                sb.append(String.valueOf(c));
            }
        }
        return sb.toString();
    }

}

 

分享到:
评论

相关推荐

    java将数字转换为时间格式

    在Java编程语言中,经常需要处理日期与时间相关的数据,例如将数字(通常是表示时间戳或特定格式的字符串)转换为更易读的时间格式。这种转换不仅可以帮助我们更好地理解和操作数据,还能增强应用程序的用户友好性。...

    Java时间格式转换大全

    其构造方法接受一个模式字符串作为参数,该模式定义了日期/时间的显示格式。 #### 2. 时间格式模式 `SimpleDateFormat`支持多种模式字符,例如: - `y`:表示年份。 - `M`:表示月份(1-12)。 - `d`:表示一个...

    Java_格式化字符串 汇总

    Java中的字符串格式化功能是处理和展示数据时不可或缺的一部分,尤其在需要将各种数据类型转换为特定格式的字符串时显得尤为重要。本文将深入探讨Java中`String`类的`format()`方法,及其如何用于创建格式化的字符串...

    字符串转日期

    ### 字符串转日期知识点详解 #### 一、概述 在日常开发工作中,我们经常会遇到需要将日期格式的字符串转换为`Date`类型的情况。这种转换对于数据处理、时间比较等操作至关重要。本文将详细介绍如何在Java环境中...

    字符串和时间戳相互转换

    而字符串则可以是多种格式的日期和时间表示。在Python、Java、JavaScript等编程语言中,都有内置的函数或库来支持这两种形式的转换。 1. Python中的字符串与时间戳转换: - `strptime()` 函数用于将字符串按照指定...

    Java时间格式转化

    本文将详细介绍如何利用Java内置类库进行时间格式的转换,包括从`Date`对象转换为字符串(`String`),以及从字符串转换为`Date`对象。 #### 一、Java时间API概述 Java中的日期时间操作主要通过以下几个类来完成:...

    java解析json格式字符串所需jar包

    2. **commons-lang-2.5.jar**:Apache Commons Lang是Java语言工具包,包含一些高级字符串处理、日期/时间操作等,对于JSON解析可能不直接相关,但可以支持更复杂的字符串操作。 3. **commons-beanutils-1.8.0.jar*...

    Java字符串 日期 数字格式化输出.doc

    Java编程语言中,字符串、日期和数字的格式化输出是一个重要的概念,特别是在处理用户界面输出或者数据记录时。虽然在C语言中可以使用`printf`函数进行格式化输出,但Java的标准输出`System.out.println()`并没有...

    java时间格式转换

    例如,对于`"yy/MM/ddHH:mm:sspm"`格式的时间字符串,我们可以这样转换: ```java String timeStr = "2002/01/0117:55:00pm"; SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/ddHH:mm:ssa"); Date date = sdf...

    java日期格式转换

    它可以将日期格式化为字符串,也可以将字符串解析为日期对象。 例如,在`getCurrentDate5()`方法中,可以使用`SimpleDateFormat`替代手动拼接字符串的方法: ```java SimpleDateFormat simpleDateFormat = new ...

    应用java实现日期型字符串和日期之间的相互转换(源代码)

    日期格式化可以非常灵活,支持多种格式,如"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"等。开发者可以根据需求自定义格式。 6. **日期运算:** Java 8的日期时间API提供了丰富的日期运算方法,如加减天数、月份等。 7. *...

    一个简单的java库用于将显示日期格式化成几分钟几天之前这样的格式

    `TimeAgo.inWords()`方法会返回一个字符串,表示给定日期距离当前时间的相对时间。这个库还支持多种语言,可以通过传入相应的语言代码来实现多语言环境下的日期显示。 此外,"marlonlom-timeago"库可能还包括一些...

    java 时间格式转换及常用时间处理

    此方法支持多种日期格式的转换,如`"yyyy.MM.ddG'at'hh:mm:ssz"`、`"yyyy/MM/dd HH:mm:ss"`等,并能够根据输入字符串中的特定字符(如“/”、“-”、“am”、“pm”)来自动选择合适的`SimpleDateFormat`实例。...

    java时间格式大全

    Java提供了多种类库来处理时间,如`java.util.Date`, `java.util.Calendar`, `java.text.SimpleDateFormat`, `java.time`包(自Java 8引入)等。下面我们将详细探讨Java中的时间格式大全以及时间转换的方法。 1. **...

    Java日期转换

    Java提供了多种类库来支持日期和时间的操作,包括`java.util.Date`、`java.text.SimpleDateFormat`、`java.time`包中的类等。本文将详细讲解这些类的使用以及它们之间的转换。 首先,`java.util.Date`是Java早期...

    格式化字符串

    ### 格式化字符串知识点...以上就是关于格式化字符串的相关知识点介绍,包括了数字格式化、日期时间格式化以及Java中的一些进阶知识点如重载、反射等。希望这些内容能够帮助读者更好地理解和运用格式化字符串的技术。

    java使用DateFormat类转换时间格式.docx

    `java.util`包中的`DateFormat`类提供了多种方法来格式化日期并将其转换为字符串,或者将字符串解析为日期对象。这对于数据展示、数据库操作以及用户界面交互等方面都极为重要。 #### 二、DateFormat类简介 `java....

    java设置日期格式

    它支持多种日期格式,并且可以根据需求自定义日期格式。此外,该类还提供了多种实例化方法,如 `getTimeInstance()`、`getDateInstance()` 和 `getDateTimeInstance()`,以便快速创建预设格式的日期格式化对象。 ##...

    java日期格式化

    总结来说,Java提供了多种方式来处理日期和时间的格式化,包括传统的`java.util.Date`和`java.text.SimpleDateFormat`,以及Java 8引入的现代化API `java.time`。在实际开发中,应根据需求选择合适的工具,确保代码...

    java格式化日期类

    总结起来,`java.text.SimpleDateFormat`是Java中用于日期和时间格式化的强大工具,通过模式字符串定义日期的显示格式,提供日期到字符串和字符串到日期的转换功能。熟练掌握这一工具类,能够帮助开发者更高效地处理...

Global site tag (gtag.js) - Google Analytics