精华内容
下载资源
问答
  • Java 日期和时间解析

    2021-02-12 22:34:29
    Java日期时间 - Java日期和时间解析由DateTimeFormatter处理的解析是从字符串创建日期时间对象。用于格式化的相同符号用作解析字符串值。如果无法解析文本,则会抛出DateTimeParseException。它有两种方法来提供错误...

    Java日期时间 - Java日期和时间解析

    由DateTimeFormatter处理的解析是从字符串创建日期时间对象。

    用于格式化的相同符号用作解析字符串值。

    如果无法解析文本,则会抛出DateTimeParseException。它有两种方法来提供错误的详细信息。getErrorIndex()返回文本中的错误偏移量。getParsedString()返回正在解析的文本。

    日期时间相关的类和DateTimeFormatter定义了将字符串解析为datetime对象的方法。

    parse()方法从datetime类

    每个datetime类有两个重载版本的parse()。parse()方法的返回类型与定义datetime类相同。

    下面的代码显示了如何使用parse()方法从LocalDate对象:import java.time.LocalDate;

    import java.time.format.DateTimeFormatter;

    public class Main {

    public static void main(String[] args) {

    LocalDate ld1 = LocalDate.parse("2014-06-10");

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");

    LocalDate ld2 = LocalDate.parse("06/10/2014", formatter);

    System.out.println("ld1: " + ld1);

    System.out.println("ld2: " + ld2);

    }

    }

    上面的代码生成以下结果。

    59e923b1ce209127f6f5d1e8fc7c451f.png

    parse()从DateTimeFormatter类

    DateTimeFormatter包含几个将字符串解析为datetime对象的parse()方法。

    它们中的大多数返回一个TemporalAccessor对象,您可以查询它以获取datetime组件。

    您可以将TemporalAccessor对象传递给datetime类的from()方法,以获取特定的datetime对象。

    以下代码显示如何使用DateTimeFormatter对象解析MM/dd /yyyy格式的字符串,以构造LocalDate:import java.time.LocalDate;

    import java.time.format.DateTimeFormatter;

    import java.time.temporal.TemporalAccessor;

    public class Main {

    public static void main(String[] args) {

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");

    TemporalAccessor ta = formatter.parse("06/10/2014");

    LocalDate ld = LocalDate.from(ta);

    System.out.println(ld);

    }

    }

    上面的代码生成以下结果。

    9b5f0af7afaec8ef5abffc74e09bc688.png

    例子

    parse()方法可以通过TemporalQuery将字符串直接解析为特定的datetime对象。import java.time.LocalDate;

    import java.time.format.DateTimeFormatter;

    public class Main {

    public static void main(String[] args) {

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");

    LocalDate ld = formatter.parse("06/10/2014", LocalDate::from);

    System.out.println(ld);

    }

    }

    上面的代码生成以下结果。

    02063261a0d9a1a2c0a30439e71a2f97.png

    Parse Best

    DateTimeFormatter类包含一个parseBest()方法。

    parseBest()方法尝试匹配与提供的格式的字符串可选格式符号。

    在以下模式中,我们有两个可选模式。yyyy-MM-dd["T"HH:mm:ss[Z]]

    文本可以完全解析为OffsetDateTime,并部分解析为LocalDateTime和LocalDate。

    以下代码显示如何使用可选模式从字符串获取最佳匹配日期时间对象。import java.time.LocalDate;

    import java.time.LocalDateTime;

    import java.time.OffsetDateTime;

    import java.time.format.DateTimeFormatter;

    import java.time.format.DateTimeParseException;

    import java.time.temporal.TemporalAccessor;

    public class Main {

    public static void main(String[] args) {

    DateTimeFormatter parser = DateTimeFormatter

    .ofPattern("yyyy-MM- dd["T"HH:mm:ss[Z]]");

    parseStr(parser, "2014-06-31");

    parseStr(parser, "2014-06-31T15:31:12");

    parseStr(parser, "2014-06-31T15:31:12-0500");

    parseStr(parser, "2014-06-31Hello");

    }

    public static void parseStr(DateTimeFormatter formatter, String text) {

    try {

    TemporalAccessor ta = formatter.parseBest(text, OffsetDateTime::from,

    LocalDateTime::from, LocalDate::from);

    if (ta instanceof OffsetDateTime) {

    OffsetDateTime odt = OffsetDateTime.from(ta);

    System.out.println("OffsetDateTime: " + odt);

    } else if (ta instanceof LocalDateTime) {

    LocalDateTime ldt = LocalDateTime.from(ta);

    System.out.println("LocalDateTime: " + ldt);

    } else if (ta instanceof LocalDate) {

    LocalDate ld = LocalDate.from(ta);

    System.out.println("LocalDate: " + ld);

    } else {

    System.out.println("Parsing returned: " + ta);

    }

    } catch (DateTimeParseException e) {

    System.out.println(e.getMessage());

    }

    }

    }

    上面的代码生成以下结果。

    357c63a5105d03a9000c45a83012987a.png

    展开全文
  • 摘要:Java 解析Cron表达式,获取最近运行时间方法一packagecom.odj.customer.index.controller;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util....

    摘要:Java 解析Cron表达式,获取最近运行时间

    方法一

    package com.odj.customer.index.controller;

    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.ArrayList;

    import java.util.Calendar;

    import java.util.Date;

    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    import org.quartz.CronTrigger;

    import org.quartz.TriggerUtils;

    import org.springframework.scheduling.support.CronSequenceGenerator;

    import org.springframework.stereotype.Controller;

    import org.springframework.util.StringUtils;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RequestMethod;

    import org.springframework.web.bind.annotation.RequestParam;

    import org.springframework.web.bind.annotation.ResponseBody;

    import com.alibaba.fastjson.JSON;

    /**

    * cron 表达式

    * @author tanyicheng E-mail: 65797706@qq.com

    * @date 创建时间:2018年4月13日 下午4:23:55

    * @version 1.0

    */

    @RequestMapping("/cron")

    @Controller

    public class CronUtilController {

    /**

    * 根据表达式计算最近运行的时间

    * @author tanyicheng 创建时间:2018年4月13日-下午4:36:01

    * @return

    * @throws ParseException

    */

    public String cronCalculation(String cron) throws ParseException{

    if (StringUtils.isEmpty(cron)) {

    throw new IllegalArgumentException("参数不能为空");

    }

    CronTrigger cronTriggerImpl = new CronTrigger();

    cronTriggerImpl.setCronExpression(cron);// 这里写要准备猜测的cron表达式

    Calendar calendar = Calendar.getInstance();

    Date now = calendar.getTime();

    calendar.add(Calendar.YEAR, 2);// 把统计的区间段设置为从现在到2年后的今天(主要是为了方法通用考虑,如那些1个月跑一次的任务,如果时间段设置的较短就不足20条)

    List dates = TriggerUtils.computeFireTimesBetween(cronTriggerImpl, null, now, calendar.getTime());// 这个是重点,一行代码搞定~~

    System.out.println(dates.size());

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    List list = new ArrayList<>();

    for (int i = 0; i 

    if (i > 19) {// 这个是提示的日期个数

    break;

    }

    list.add(dateFormat.format(dates.get(i)));

    }

    return null;

    }

    }

    这种方式有一个缺点,如果表达式出发时间间隔较短,响应时间会非常慢

    方法二(推荐这种)

    public static void main(String[] args) throws ParseException, InterruptedException {

    CronSequenceGenerator cronSequenceGenerator = new CronSequenceGenerator("* * * * * ?");

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

    List list = new ArrayList<>(20);

    Date nextTimePoint = new Date();

    for (int i = 0; i 

    // 计算下次时间点的开始时间

    nextTimePoint = cronSequenceGenerator.next(nextTimePoint);

    list.add(sdf.format(nextTimePoint));

    }

    for (String string : list) {

    System.out.println(string);

    }

    }

    展开全文
  • java解析多种时间格式

    2021-02-26 08:40:25
    应用场景:在我之前有一次写Excel导入的时候,由于Excel中的单元格格式问题,用户可能会输入多种不同格式的日期格式,项目经理要求能解析多种常用的时间格式实现的代码:/*** @param inputDate 要解析的字符串* @...

    应用场景:在我之前有一次写Excel导入的时候,由于Excel中的单元格格式问题,用户可能会输入多种不同格式的日期格式,项目经理要求能解析多种常用的时间格式

    实现的代码:

    /**

    * @param inputDate 要解析的字符串

    * @return 解析出来的日期,如果没有匹配的返回null

    */

    public static Date parseDate(String inputDate) {

    //可能出现的时间格式

    String[] patterns = {

    "yyyy-MM-dd HH:mm:ss",

    "yyyy-MM-dd HH:mm",

    "yyyy/MM/dd HH:mm:ss",

    "yyyy/MM/dd HH:mm",

    "yyyy年MM月dd日",

    "yyyy-MM-dd",

    "yyyy/MM/dd",

    "yyyyMMdd"

    };

    SimpleDateFormat df = new SimpleDateFormat();

    for (String pattern : patterns) {

    df.applyPattern(pattern);

    df.setLenient(false);//设置解析日期格式是否严格解析日期

    ParsePosition pos = new ParsePosition(0);

    Date date = df.parse(inputDate, pos);

    if (date != null) {

    return date;

    }

    }

    return null;

    }

    展开全文
  • 1、通过String.format()方法String.format("%tR", new Date())2、通过DateTimeFormatter实现String timeString = LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss")).format...

    1、通过String.format()方法String.format("%tR", new Date())

    2、通过DateTimeFormatter实现String timeString = LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"))

    .format(DateTimeFormatter.ofPattern("HH:mm"));

    3、使用SimpleDateFormat类

    String originalString = "2010-07-14 09:00:02";

    Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(originalString);

    String newString = new SimpleDateFormat("HH:mm").format(date); //09:00

    4、SimpleDateFormat常用介绍/*

    SimpleDateFormat函数语法:

    G 年代标志符

    y 年

    M 月

    d 日

    h 时 在上午或下午 (1~12)

    H 时 在一天中 (0~23)

    m 分

    s 秒

    S 毫秒

    E 星期

    D 一年中的第几天

    F 一月中第几个星期几

    w 一年中第几个星期

    W 一月中第几个星期

    a 上午 / 下午 标记符

    k 时 在一天中 (1~24)

    K 时 在上午或下午 (0~11)

    z 时区

    */

    priva

    展开全文
  • 今天遇到这样的时间格式需要进行转化 2021-11-02T05:55:14.428Z 转换代码如下 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; ...
  • Java 解析中间带有 “T“ 的时间格式

    千次阅读 2020-08-03 18:26:24
    public String convertDataForT... SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd'T'HH:mm:ss"); // Data 类型 // Date parse = simpleDateFormat.parse(inputData); // String 类型 ...
  • Java 解析UTC格式时间为时间戳

    千次阅读 2019-09-12 11:00:58
    Java 解析UTC格式时间为时间戳 String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC...
  • 关于编程语言中的时间格式和关系型数据中的中时间格式问题的转化一直...关于Java中的时间格式和数据库中的时间格式转换在这里先写两个方法:/****@paramutilDate*@return*/publicstaticjava.sql.DateconvertUtilDate...
  • Java时间日期格式转换解析

    千次阅读 2019-02-14 15:56:32
    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; public class test {  public static void main(String[] args) {  ...
  • String STANDARD_DATE_FORMAT_...yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; Calendar date = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(STANDARD_DATE_FORMAT_UTC); sdf.setTimeZone(TimeZo...
  • java 时间解析

    千次阅读 2015-12-31 16:53:27
    对于以下格式的日期进行转换成正常的2014-12-11 11:20:44: Thu, 31 Dec 2015 13:05:30 +0800 Thu, 31 Dec 2015 08:25:04 GMT 使用如下代码进行转换: ... "EEE, d MMM yyyy HH:mm:ss 'GMT'",
  • 目录 字母意思 编码实现 字母意思 SSS指的是毫秒,Z代表的时区,... SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm:sssZ"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd
  • 微信公众号:[一起学习大数据呀]关注可学习更多奇怪的知识! 前言 产品让我添加一个导入Excel 表格并对时间格式校验:“yyyy-MM-.../** * 校验时间格式是否为 yyyy-MM-dd HH:mm:ss * @param date * @return */pub...
  • Java 日期时间

    千次阅读 2021-02-12 23:50:48
    Java 日期时间java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从...
  • java groovy SimpleDateFormat 解析 yyyy-MM-ddTHH:mm:ss 带T字符的时间格式没有废话 ,看码错误方式:正确方式重点 : 没有废话 ,看码 错误方式: /** * 时间格式转换 * @param endTime yyyy-MM-ddTHH:mm:ss.SSS...
  • 猎头学校 hh 开发者学校 2014 年作业 Java 日志解析Java简单聊天服务器 命令行任务(主要是解析) 简单的 bash 服务器 (netcat) 使用 OAuth 2.0 (python) 进行 Dropbox 身份验证
  • java中如何读取excel表格中的日期这个问简单!首先,用apachePOI找到对应的列,读取看看什么情况,如果是乱码就用InputstreamReader改变编码格式,有那个构造方法,如果是数字能正确显示,但是有错位等情况,那就索性...
  • 今天线上出了个bug,发现是在解析CST格式的时间时,出了一个bug。 后来发现 一是需要指定对应的格式 "EE MMM dd HH:mm:ss z yyyy" 二是需要指定时间格式 Locale.ENGLISH 注:我们在做时间格式转换时,主要是找对...
  • import java.util.Date;import java.util.Locale;import java.util.Calendar;import java.text.DateFormat;import java.text.SimpleDateFormat;/*** SimpleDateFormat 的API测试程序** @author skywang* @email ...
  • java解析上传的excel文件(xls,xlsx)

    万次阅读 热门讨论 2018-08-15 09:21:08
    其中poi是解析xls格式的,poi-ooxml是解析xlsx格式的 &lt;!-- POI,excel解析相关 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;...
  • 根据SimpleDateFormat类文档,Java在其日期模式中不支持毫秒以上的时间粒度。因此,日期字符串2015-05-09 00:10:23.999750900 //最后9位数字表示纳秒通过模式解析时yyyy-MM-dd HH:mm:ss.SSSSSSSSS // 9个'S'符号...
  • Java解析JSP表达式

    千次阅读 2017-01-09 18:37:42
    最近系统中希望可以动态解析用户传入的变量,在调研了一下决定JSP表达式是一个非常...所以对如何在JAVA中提供并解析标准的JSP表达式做一下总结。 在解析时使用了以下两个包: commons-el commons-el 1.0
  • 下面的代码为我提供了当前时间。 但这并不能说明毫秒。public static String getCurrentTimeStamp() {SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyyDate now = new Date();...
  • 最近在开发项目过程中,发现返回的数据中现实的日期与数据库中日期大概相差8小时,这是因为直接从数据库中查询出来的时间是格林威治时间,而不是北京(东八区)时间,所以我们需要做日期格式化,将格林威治时间转为...
  • ❤️高级JAVA开发必备技能❤️java8 新日期时间API((三)JSR-310:格式化和解析)(JAVA java 小虚竹)
  • SimpleDateFormat是一个以与语言环境有关的方式来...SimpleDateFormat使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过DateFormat中的getTimeInstance、getDateInstance或getDateTimeInstance...
  • dr其中秒和毫秒为00000,这是解析器失败时不,解析器成功。您的问题是生成一个字符串,而不是解析。默认DateTimeFormatter抑制秒和分数第二零个值,如记录。功能,而非错误您的问题不在于解析,而在于解析后生成...
  • /** * 解析时间 */ public static synchronized String getDateTime(String time) { SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy K:m:s a", Locale.ENGLISH); ...
  • /*** Copyright 2020. yaodouwang.com Studio All Right Reserved* * Create on 03-23 12:45* Created by zhaoxinguo* Version 2.0.0*/package ...import java.text.ParseException;import java.text.S...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,749
精华内容 19,099
关键字:

java时间解析hh

java 订阅