zoukankan      html  css  js  c++  java
  • Java字符串,日期的格式化

    JSP中常用的格式化包括:
    1. 字符串的格式化
    2. 字符串和HTML显示内容的格式化
    3. 日期的格式化

    一、字符串的格式化
    字符串处理是项目中使用最频繁的,Java中提供了二种格式化字符串的方法,JDBC还提供了一种问号参数类似于格式化SQL语句。

    1. 使用String.format()方法格式化字符串
       语法格式为:public static String format(String format, Object... args)
       其中字符串中的占位符(与C语言相同)为:%d -- 整数 %f --小数 %s -- 字符串
        格式化时按占位符的顺序使用变量的值替换。如有重复值,需要写两个%d,赋值两个
        例如:
            String str = "select top %d * from tb_user";
            str = String.format(str, 10);
    2. 使用MessageFormat格式化字符串。
         类MessageFormat来自java.text包
         占位符:{0}、{1} 或者 {1[, 格式类型[,格式样式]]}
         格式类型有:number, date, time, choice
         格式样式详情请参见:JDK帮助。

         例如:
         int planet = 7;
         String event = " disturbance ";

        String result = MessageFormat.format(
         "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
         planet, new Date(), event);

        输出为:
            At 12:30 PM on Jul 3, 2053, there was disturbance on planet 7.

    3. SQL语句的问号参数
        使用?为占位符,顺序从1开始。
        在创建PreparedStatement对象执行SQL语句前,为所有的问号设置参数值。
        语句为:
        private void bindParameter(Object... params){
             if(params != null){//此处使用可变参数,如果没有参数,则为null,否则为参数数组,类型为Object
                   int i = 1;  //参数序号从1开始
                   for(Object o : params){
                          if(o == null){
                              pre.setNull(i,Types.VARCHAR);  //设置数据库的字段值为NULL
                          }else if(o instanceof java.util.Date){ //o如果为java.util.Date的对象,返回true
                              java.util.Date dd = (java.util.Date)o;           
                              java.sql.Date sd = new java.sql.Date(dd.getTime());
                              pre.setDate(i, sd);
                        }else{
                              pre.setObject(i, o);
                        }
                       
                   i++;
                   }
             }
       }

    4.SQL类型的时间转Java时间,

    package com.accp.dao;
    import java.sql.Timestamp;
    import java.util.Date;
    public class DateTime {
     
     
     public Date dateToJava(Timestamp date){
      Date javaDate=new Date(date.getTime());
      return javaDate;
     
    }

    二、字符串与HTML字符内容转换
       有些特殊字符在Java中可以随便输出,但是在HTML页面中就不能够正常显示了。
       这个时候我们需要对这些特殊字符做以个转换。 如 < 转换成 &lt;
      
       方法如下:
       public String htmlSetChange(String source){
            String changeStr="";
            changeStr=source.replace("&","&amp;");
            changeStr=changeStr.replace(" ","&nbsp;");
            changeStr=changeStr.replace("<","&lt;");
            changeStr=changeStr.replace(">","&gt;");       
            changeStr=changeStr.replace("\r\n","<br>");
            return changeStr;
        }

    二、日期格式化处理
       JSP项目中,为什么需要日期格式化处理呢?
       主要原因是Java中有两个Date类,一个为java.util.Date,另一个为java.sql.Date。
       它们两者的关系是:java.util.Date是java.sql.Date的父类。

       我们Java中程序中常用的java.util包的Date,但是数据库中使用的为java.sql包的,所有当我们把日期存入数据库时就会发生问题,因为父类对象不能够直接赋值给子类引用。

        提供的解决方案有:
        a. 使用SQL语句插入数据时,可直接取数据库时间。 用getdate()
        b. 如果需要把已有的Date对象存入数据库中,不需人工转换,强制转换不行。
            目前常用方法为:
             1.
              java.util.Date dd = new java.util.Date();
              java.sql.Date sdate = new java.sql.Date(dd.getTime());  //采用这种方式转换

             2.
             java.util.Date dd = new java.util.Date();
             //创建日期格式化对象
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             //格式化当前日期
             String sdate = sdf.format(dd);
             //设置日期--因为SQL Server中字符串可以和日期类型自动转换。
             pre.setObject(i++, sdate);

             //有时分秒,但不兼容其它数据库,只适用于SQL Server数据库。

        c. 读取数据库中的日期时,可使用getDate(),不过此时损失时分秒
        d. 可使用getString获取日期类型,再把字符串转成创建为java.util.Date类型对象
           把字符串转成日期类型时,需要使用DateFormat类。来自java.text包
           这个类的构造方法为protected类型,所以我们需要使用静态方法获取类的实例。
           常用三个方法:
           static DateFormat getDateInstance()           只包括日期,不带时间。
           static DateFormat getDateTimeInstance()   包括日期和时间
           static DateFormat getTimeInstance()          只包括时间部分
           它还有其它的重载方法,比如带风格和时区参数的

           获取格式化对象后,在调用Date parse(String source) 方法得到日期对象。
           例如:
               Date d = DateFormat.getDateTimeInstance().parse("2009-08-08 20:08:08");
               //参数为符合日期规则的字符串
               System.out.println(d.getDate());

        如果要把日期类型格式化成字符串,使用java.text.SimpleDateFormat类
        例如:
         Date d = new Date();
         //创建格式化对象实例,并带日期格式字符串
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
         String s = sdf.format(d);
         System.out.println(s);

        其它详细内容:请参见JDK帮助文档。


    http://blog.csdn.net/shl7765856/article/details/7536910

  • 相关阅读:
    [leetcode]Insert Interval @ Python
    [leetcode]Merge Intervals @ Python
    [leetcode]Maximum Subarray @ Python
    [leetcode]Jump Game II @ Python
    [leetcode]Jump Game @ Python
    [leetcode]Wildcard Matching @ Python
    tomcat 配置https 外部链接显示证书不安全 原因找到为其他地方的链接用的ip地址,证书是发给域名的所以报错
    netstat -tanp ss -lntup |grep
    https://www.pstips.net/ powershell
    awk之getline()函数运用
  • 原文地址:https://www.cnblogs.com/tgxblue/p/4217395.html
Copyright © 2011-2022 走看看