Java中的SimpleDateFormat方法分析

2024-02-26 1484阅读

温馨提示:这篇文章已超过400天没有更新,请注意相关的内容是否还可用!

Java中的SimpleDateFormat方法分析

    • 先进行专栏介绍
    • SimpleDateFormat方法
      • 分析
      • 常用方法
        • 构造方法
        • 格式化(从Date到String)
          • 举例
          • 分析
          • 解析(从String到Date)
            • 举例
            • 分析
            • 设置方法:
            • 注意
            • 代码示例
              • 代码
              • 结果
              • 综合案例
                • 效果

                  先进行专栏介绍

                  本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记

                  进行适当修改。希望能对大家能有所帮助,同时也是请大家对我进行监督,对我写的代码进行建议,互相学习。

                  Java中的SimpleDateFormat方法分析

                  SimpleDateFormat方法

                  在Java中,SimpleDateFormat类是用于日期格式化和解析的类。它位于java.text包中。

                  分析

                  SimpleDateFormat SimpleDateFormat是一个用于区域设置敏感的方式格式化和解析日期的具体类

                  日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,

                  从’A’到’Z’以及从‘a’到’z’引号中的字母被解释为表示日期或时间字符串的组成部分的模式字母

                  常用模式字母 y 年 M 月 d 日 H 时 m 分 s 秒

                  举例 2021年10月27日11:11:11

                  模式 yyyy年MM月dd日HH:mm:ss

                  Java中的SimpleDateFormat方法分析

                  常用方法

                  构造方法

                  SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期 SimpleDateFormat(String pattern): 构造一个SimpleDateFormat使用给定的模式和默认的日期格式

                  格式化(从Date到String)

                  String format(Date date):将日期格式化成日期/时间字符串

                  举例
                  Date now = new Date();
                  String formattedDate = sdf.format(now);
                  System.out.println(formattedDate);
                  
                  分析

                  我们使用format()方法将当前日期和时间对象格式化为一个字符串,并将其打印到控制台上。

                  解析(从String到Date)

                  Date parse(String source):从给定字符串的开始解析文本以生成日期

                  举例
                  String dateStr = "2022-01-01 12:00:00";
                  Date parsedDate = sdf.parse(dateStr);
                  System.out.println(parsedDate);
                  
                  分析

                  使用parse()方法将一个字符串解析为一个日期对象,并将其打印到控制台上。

                  设置方法:

                  void setLenient(boolean lenient):设置解析时是否宽松的解析日期,默认为true,即宽松解析,对于一些不合法的日期也会尝试解析。

                  void setDateFormatSymbols(DateFormatSymbols newFormatSymbols):设置用于格式化和解析日期的DateFormatSymbols对象,用于指定月份、星期几等的名称。

                  Java中的SimpleDateFormat方法分析

                  注意

                  SimpleDateFormat不是线程安全的。如果多个线程同时使用同一个SimpleDateFormat对象,可能会导致结果不正确。为了解决这个问题,我们可以使用ThreadLocal来确保每个线程都有自己的SimpleDateFormat对象。

                  是SimpleDateFormat对于日期格式的解析是宽松的。这意味着它会尝试解析不完整或不正确的日期字符串,并返回一个可能不准确的日期对象。为了避免这种情况,我们应该始终使用严格的日期格式,并在解析之前对日期字符串进行验证。

                  代码示例

                  代码

                  import java.text.ParseException;
                  import java.text.SimpleDateFormat;
                  import java.util.Date;
                  public class crj {
                      public static void main(String[] args) {
                          //Date():
                          Date d1 = new Date();
                          System.out.println(d1);
                          //Date(long date):  1000(毫秒)*60*60   一小时
                          Date d2 = new Date(1000 * 60 * 60);
                          System.out.println(d2);
                          Date d = new Date();
                  //        SimpleDateFormat sdf = new SimpleDateFormat();
                          SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                          String s = sdf.format(d);
                          System.out.println(s);
                          System.out.println("-------");
                          //解析
                          String ss="2021-10-27 11:11:11";
                  //        SimpleDateFormat sdf2=new SimpleDateFormat("2021年10月27日 11:11:11");
                          SimpleDateFormat sdf2=new SimpleDateFormat("2021-10-27 11:11:11");
                          Date dd= null;
                          try {
                              dd = sdf2.parse(ss);
                          } catch (ParseException e) {
                              e.printStackTrace();
                          }
                          System.out.println(dd);
                      }
                  }
                  

                  结果

                  Wed Aug 09 07:47:56 CST 2023
                  Thu Jan 01 09:00:00 CST 1970
                  2023年08月09日 07:47:56
                  -------
                  Thu Jan 01 00:00:00 CST 1970
                  

                  Java中的SimpleDateFormat方法分析

                  综合案例

                  import com.itheima_05.DateChooser;
                  import javax.swing.*;
                  import java.awt.event.ActionEvent;
                  import java.awt.event.ActionListener;
                  import java.text.ParseException;
                  import java.text.SimpleDateFormat;
                  import java.util.Date;
                  public class crj {
                      public static void main(String[] args) {
                          JFrame jf = new JFrame();
                          jf.setTitle("考勤查询");
                          jf.setSize(400, 300);
                          jf.setDefaultCloseOperation(3);
                          jf.setLocationRelativeTo(null);
                          jf.setAlwaysOnTop(true);
                          jf.setLayout(null);
                          //显示考勤日期
                          JLabel dataLable = new JLabel("考勤日期");
                          dataLable.setBounds(50, 20, 100, 20);
                          jf.add(dataLable);
                          //开始时间
                          JLabel startDateLable = new JLabel("开始时间");
                          startDateLable.setBounds(50, 70, 100, 20);
                          jf.add(startDateLable);
                          DateChooser dateChooser1 = DateChooser.getInstance("yyyy/MM/dd");
                          DateChooser dateChooser2 = DateChooser.getInstance("yyyy/MM/dd");
                          //开始时间输入框
                          JTextField startDateField = new JTextField();
                          startDateField.setBounds(50, 100, 100, 20);
                          dateChooser1.register(startDateField);
                          jf.add(startDateField);
                          //结束时间
                          JLabel endDateLable = new JLabel("结束时间");
                          endDateLable.setBounds(250, 70, 100, 20);
                          jf.add(endDateLable);
                          //结束时间输入框
                          JTextField endDateField = new JTextField();
                          endDateField.setBounds(250, 100, 100, 20);
                          dateChooser2.register(endDateField);
                          jf.add(endDateField);
                          //确定按钮
                          JButton confirmButton = new JButton("确定");
                          confirmButton.setBounds(250, 180, 60, 20);
                          jf.add(confirmButton);
                          confirmButton.addActionListener(new ActionListener() {
                              @Override
                              public void actionPerformed(ActionEvent e) {
                                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
                                  //获取开始 结束时间
                                  String startDateString = startDateField.getText();
                                  String endDateString = endDateField.getText();
                                  try {
                                      Date startDate = sdf.parse(startDateString);
                                      Date endDate = sdf.parse(endDateString);
                                      JOptionPane.showMessageDialog(jf,startDate+"\n"+endDate);
                                  } catch (ParseException ex) {
                                      ex.printStackTrace();
                                  }
                              }
                          });
                          jf.setVisible(true);
                      }
                  }
                  

                  效果

                  Java中的SimpleDateFormat方法分析

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]