Jxls日期格式化问题

使用Jxls模版导出Excel,怎样格式化日期? 如:2014-01-01

 

代码:

<jx:forEach items="${objs}" var="obj" >
${obj.date}
</jx:forEach>

 

结果:

41791

41791

41791

回答: Jxls日期格式化问题

  1. 我用的是jxl,根本不需要格式化,读取单元格内容只有一个方法:Cell对象中的getContents()方法。
    如果用poi,那么麻烦一点。我怀疑你用的是poi,那么HSSFCell中有getCellType()方法,日期型归于 HSSFCell.CELL_TYPE_NUMERIC类型,那么需要使用HSSFCell的getNumericCellValue()获取值,然后使用HSSFDateUtil.isCellDateFormatted(获取值)判断是否是日期型,如果是,然后Date date = HSSFDateUtil.getJavaDate(获取值)

分享代码 表单验证+对话框+日期格式化+日期选择框+select美化js框架

  1. Q
    分享代码 表单验证+对话框+日期格式化+日期选择框+select美化js框架


    分享代码 表单验证+对话框+日期格式化+日期选择框+select美化js框架
    更多下载 http://pan.baidu.com/s/1i3Kdn2t






    部分代码 js / php 对应版的日期格式化类

    /*
    // @author : lael
    // blog : http://hi.baidu.com/lael80
    // http://www.gzyd.net
    // all right reserved.
    */
    var dateutils = function(){}
    /*
    d : 日期字符串
    ff : (d : 日期字符串)原格式/未知为false
    tf : 新格式

    f、ff、tf : 格式化字符串,由以下结构组成(具体参考php日期格式字符,但仅支持以下所列) 
    要直接显示以下字符,请用 \\ 转义,如:Y\\Y\\e\\ar-m-d H\\Houri:s
    //
    Y  4 位数字完整表示的年份  例如:1999 或 2003
    y  2 位数字表示的年份  例如:99 或 03
    //
    n  数字表示的月份,没有前导零  1 到 12
    m  数字表示的月份,有前导零  01 到 12
    e (非php定义,自定义的)中文月份 一月 到 十二月
    M  三个字母缩写表示的月份  Jan 到 Dec
    F  月份,完整的文本格式,例如 January 或者 March  January 到 December
    //
    j  月份中的第几天,没有前导零  1 到 31
    d  月份中的第几天,有前导零的 2 位数字  01 到 31
    //
    g  小时,12 小时格式,没有前导零  1 到 12
    G  小时,24 小时格式,没有前导零  0 到 23
    h  小时,12 小时格式,有前导零  01 到 12
    H  小时,24 小时格式,有前导零  00 到 23
    //
    i  有前导零的分钟数  00 到 59
    //
    s  秒数,有前导零  00 到 59
    //
    x (非php定义,自定义的)中文上下午
    a  小写的上午和下午值  am 或 pm
    A  大写的上午和下午值  AM 或 PM
    //
    D  星期中的第几天,文本表示,3 个字母  Mon 到 Sun
    l (“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
    k (非php定义,自定义的)中文星期 星期日 到 星期六
    w  星期中的第几天,数字表示  0(表示星期天)到 6(表示星期六)
    //
    */
    /*
    <script language="javascript" src="{$CFG[skinpath]}javascript/dateutils.js"></script>
    <script language="javascript">
    var _dateutils = new dateutils();
    alert(_dateutils.format('2001-12-23 星期日 21:11:10', 'Y-m-d H:i:s', 'Y-m-d H:i:s'));
    alert(_dateutils.format('2001-12-23 星期日 21:11:10', false, 'Y-m-d H:i:s'));
    </script> 
    */
    dateutils.prototype.format = function(d, ff, tf){
    var wk = [['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], 
     ['Sun', 'Mon', 'Tur', 'Wed', 'Thu', 'Fri', 'Sat'],
     ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']]; 
    var mh = [['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
     ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
     ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']]; 

    var c = this.newdate(d, ff);
    var o = {
    'Y' : c.getFullYear(),
    'y' : c.getYear(),
    'n' : c.getMonth() + 1,
    'm' : this.fatstr(c.getMonth() + 1, 2, '0'),
    'e' : mh[0][c.getMonth()],
    'M' : mh[1][c.getMonth()],
    'F' : mh[2][c.getMonth()],
    'j' : c.getDate(),
    'd' : this.fatstr(c.getDate(), 2, '0'),
    'g' : (c.getHours() > 12 ? c.getHours() - 12 : c.getHours()),
    'h' : this.fatstr(c.getHours() > 12 ? c.getHours() - 12 : c.getHours(), 2, '0'),
    'G' : c.getHours(),
    'H' : this.fatstr(c.getHours(), 2, '0'),
    'i' : this.fatstr(c.getMinutes(), 2, '0'),
    's' : this.fatstr(c.getSeconds(), 2, '0'),
    'x' : (c.getHours() >= 0 && c.getHours() < 12 ? '上午' : '下午'),
    'a' : (c.getHours() >= 0 && c.getHours() < 12 ? 'am' : 'pm'),
    'A' : (c.getHours() >= 0 && c.getHours() < 12 ? 'AM' : 'PM'),
    'k' : wk[0][c.getDay()],
    'D' : wk[1][c.getDay()],
    'l' : wk[2][c.getDay()],
    'w' : c.getDay()
    };
    if(!tf)tf = 'Y-m-d H:i:s';
    var r = this.formatregexp(tf);
    var m = this.stripformat(tf).match(r);
    if(!m)return this.stripformat(tf);
    var n = r.substr(1, r.length - 2);
    for(var i = 1; i < m.length; i ++){
    n = n.replace('(' + m[i] + ')', o[m[i]]);
    }
    return this.stripregexp(n);
    }
    dateutils.prototype.validator = function(d, f){
    return this.format(d, f, f) == d;
    }
    dateutils.prototype.newdate = function(d, f){
    try{if(d.getFullYear())return d;}catch(e){}
    var n = ['', '', '', '', '', ''];
    if(f){
    var _d = d.match(this.dateregexp(f));
    var _f = this.stripformat(f).match(this.formatregexp(f));
    if(_d && _f){
    var mh = [['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
     ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
     ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']];
    var aA = 0;
    var gh = false;
    var GH = false;
    for(var i = 0; i < _f.length; i ++){
    if(_f[i] == 'y')n[0] = '20' + _d[i];
    if(_f[i] == 'Y')n[0] = _d[i];
    if(_f[i] == 'e' || _f[i] == 'M' || _f[i] == 'F' || _f[i] == 'n' || _f[i] == 'm'){
    var _n = this.inarray(_d[i], mh[0]);
    if(_n == -1)_n = this.inarray(_d[i], mh[1]);
    if(_n == -1)_n = this.inarray(_d[i], mh[2]);
    n[1] = _n == -1 ? _d[i] * 1 - 1 : _n;
    }
    if(_f[i] == 'j' || _f[i] == 'd')n[2] = _d[i];
    if(_f[i] == 'g' || _f[i] == 'h'){gh = true; n[3] = _d[i];}
    if(_f[i] == 'G' || _f[i] == 'H'){GH = true; n[3] = _d[i];}
    if(_f[i] == 'a' || _f[i] == 'A'){
    if(_d[i] == 'am' || _d[i] == 'AM'){
    aA = 0;
    }else{
    aA = 12;
    }
    }
    if(_f[i] == 'x'){
    if(_d[i] == '上午' || _d[i] == '下午'){
    aA = 0;
    }else{
    aA = 12;
    }
    }
    if(_f[i] == 'i')n[4] = _d[i];
    if(_f[i] == 's')n[5] = _d[i];
    }
    if(GH === false && gh)n[3] = n[3] * 1 + aA;//上下午调整
    }
    }
    var _d = new Date(d);
    if(isNaN(_d))_d = new Date(this.rpdate(d));
    if(isNaN(_d))_d = new Date();

    if(!/\d{4}/.test(n[0]))n[0] = _d.getFullYear();
    if(!/(0*[0-9]|1[0-1])/.test(n[1]))n[1] = _d.getMonth();
    if(!/(0*[1-9]|[1-2][0-9]|30|31)/.test(n[2]))n[2] = _d.getDate();
    if(!/([0-1]*[0-9]|20|21|22|23)/.test(n[3]))n[3] = _d.getHours();
    if(!/([0-5]*[0-9])/.test(n[4]))n[4] = _d.getMinutes();
    if(!/([0-5]*[0-9])/.test(n[5]))n[5] = _d.getSeconds();
    return (new Date(n[0], n[1], n[2], n[3], n[4], n[5]));
    }
    dateutils.prototype.rpdate = function(d){
    ......................................................





    <?php
    defined('YD_TRUE') or exit('Access Denied');
    /*
    // @author : lael
    // blog : http://hi.baidu.com/lael80
    // http://www.gzyd.net
    // all right reserved.
    */

    /*
    d : 日期字符串
    ff : (d : 日期字符串)原格式/未知为false
    tf : 新格式

    f、ff、tf : 格式化字符串,由以下结构组成(具体参考php日期格式字符,但仅支持以下所列) 
    要直接显示以下字符,请用 \\ 转义,如:Y\\Y\\e\\ar-m-d H\\Houri:s
    //
    Y  4 位数字完整表示的年份  例如:1999 或 2003
    y  2 位数字表示的年份  例如:99 或 03
    //
    n  数字表示的月份,没有前导零  1 到 12
    m  数字表示的月份,有前导零  01 到 12
    e (非php定义,自定义的)中文月份 一月 到 十二月
    M  三个字母缩写表示的月份  Jan 到 Dec
    F  月份,完整的文本格式,例如 January 或者 March  January 到 December
    //
    j  月份中的第几天,没有前导零  1 到 31
    d  月份中的第几天,有前导零的 2 位数字  01 到 31
    //
    g  小时,12 小时格式,没有前导零  1 到 12
    G  小时,24 小时格式,没有前导零  0 到 23
    h  小时,12 小时格式,有前导零  01 到 12
    H  小时,24 小时格式,有前导零  00 到 23
    //
    i  有前导零的分钟数  00 到 59
    //
    s  秒数,有前导零  00 到 59
    //
    x (非php定义,自定义的)中文上下午
    a  小写的上午和下午值  am 或 pm
    A  大写的上午和下午值  AM 或 PM
    //
    D  星期中的第几天,文本表示,3 个字母  Mon 到 Sun
    l (“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
    k (非php定义,自定义的)中文星期 星期日 到 星期六
    w  星期中的第几天,数字表示  0(表示星期天)到 6(表示星期六)
    //
    */

    /*
    require inc_path('classes/dateutils.class.php');
    $du = new DateUtils();
    echo $du->newdate('2010Year-11-12 13Hour14:15', 'Y\\Y\\e\\ar-m-d H\\Houri:s');
    echo '<br />';
    echo $du->format('2010Year-11-12 13Hour14:15', 'Y\\Y\\e\\ar-m-d H\\Houri:s', 'Y-m-d H:i:s F e M F k D l x');
    exit;
    */

    class DateUtils{
    function __construct(){}

    function format($d, $ff = false, $tf = false){
    $wk = array(array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'), 
     array('Sun', 'Mon', 'Tur', 'Wed', 'Thu', 'Fri', 'Sat'),
     array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')); 
    $mh = array(array('一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'),
     array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'),
     array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December')); 

    $c = $this->newdate($d, $ff);
    $o = array(
    'Y' => date('Y', $c),
    'y' => date('y', $c),
    'n' => date('n', $c),
    'm' => date('m', $c),
    'e' => $mh[0][date('n', $c)],
    'M' => $mh[1][date('n', $c)],
    'F' => $mh[2][date('n', $c)],
    'j' => date('j', $c),
    'd' => date('d', $c),
    'g' => date('g', $c),
    'h' => date('h', $c),
    'G' => date('G', $c),
    'H' => date('H', $c),
    'i' => date('i', $c),
    's' => date('s', $c),
    'x' => date('a', $c) == 'am' ? '上午' : '下午',
    'a' => date('a', $c),
    'A' => date('A', $c),
    'k' => $wk[0][date('w', $c)],
    'D' => $wk[1][date('w', $c)],
    'l' => $wk[2][date('w', $c)],
    'w' => date('w', $c)
    );
    if(!$tf)$tf = 'Y-m-d H:i:s';
    $r = $this->formatregexp($tf);
    preg_match_all($r, $this->stripformat($tf), $m);
    if(!$m)return $this->stripformat($tf);
    $n = substr($r, 2, strlen($r) - 4);
    for($i = 1; $i < count($m); $i ++){
    $n = str_replace('('.$m[$i][0].')', $o[$m[$i][0]], $n);
    }
    return $this->stripregexp($n);
    }

    function validator($d, $f){
    return $this->format($d, $f, $f) == $d;
    }

    function newdate($d, $f = false){
    ................................................... 
    ?>
  2. A
    分享代码 表单验证+对话框+日期格式化+日期选择框+select美化js框架

springmvc @ResponseBody日期格式化

  1. Q
    @Component
    public class JsonDateSerializer extends JsonSerializer<Date> {
    
    	private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    	
    	@Override
    	public void serialize(Date date, JsonGenerator gen, SerializerProvider arg2)
    			throws IOException, JsonProcessingException {
    		String formattedDate = format.format(date); 
    		gen.writeString(formattedDate); 
    	}
    	
    }
    
    @JsonSerialize(using=JsonDateSerializer.class)
    	public Date getCreateDate() {
    		return createDate;
    	}
    


    http://blog.csdn.net/rendiyi/article/details/8056514
    这个文章是介绍返回类型是实体类的 比如返回List<User>
    然后再 属性上加标记 using=JsonDateSerializer.class可以正确返回

    但是我的Controller里返回的是Map<String,Object> 这里面有个Date类型
    返回到客服端就不起作用了。如果解决(我不想把Map里的日期取出来手动的去转 那样要累死的)
  2. A
    请参考全局配置
    http://stackoverflow.com/questions/7672211/java-spring-jackons-date-serialization

ASP 日期格式化的问题

  1. Q
    在本地        formatdatetime(now(),2) 输出结果 2015-01-01

    在服务器上 formatdatetime(now(),2) 输出结果 2015-1-1

    不能修改服务器的时间格式,怎么把服务器上的时间格式也输出成 2015-01-01
  2. A
    ============================================ 
    格式化时间(显示) 
    参数:n_Flag 
    1:"yyyy-mm-dd hh:mm:ss" 
    2:"yyyy-mm-dd" 
    3:"hh:mm:ss" 
    4:"yyyy年mm月dd日" 
    5:"yyyymmdd" 
    6:"yyyymmddhhmmss" 
    ============================================ 
    Function FormatTime(s_Time, n_Flag) 
     Dim y, m, d, h, mi, s 
     FormatTime = "" 
     If IsDate(s_Time) = False Then Exit Function 
     y = cstr(year(s_Time)) 
     m = cstr(month(s_Time)) 
     If len(m) = 1 Then m = "0" & m 
     d = cstr(day(s_Time)) 
     If len(d) = 1 Then d = "0" & d 
     h = cstr(hour(s_Time)) 
     If len(h) = 1 Then h = "0" & h 
     mi = cstr(minute(s_Time)) 
     If len(mi) = 1 Then mi = "0" & mi 
     s = cstr(second(s_Time)) 
     If len(s) = 1 Then s = "0" & s 
     Select Case n_Flag 
     Case 1 
      yyyy-mm-dd hh:mm:ss 
     FormatTime = y & "-" & m & "-" & d & " " & h & ":" & mi & ":" & s 
     Case 2 
     yyyy-mm-dd 
     FormatTime = y & "-" & m & "-" & d 
     Case 3 
     hh:mm:ss 
     FormatTime = h & ":" & mi & ":" & s 
     Case 4 
      yyyy年mm月dd日 
     FormatTime = y & "年" & m & "月" & d & "日" 
     Case 5 
      yyyymmdd 
     FormatTime = y & m & d 
     case 6 
     yyyymmddhhmmss 
     FormatTime= y & m & d & h & mi & s 
     End Select 
    End Function

sqlite数据库中的日期格式化问题

  1. Q
    sqlite中有一列日期格式的字段A,值是:2013-02-05 14:47:36.587000000,怎么样才能转为YYYY-MM-DD HH:MM:SS格式呢?
  2. A
     SELECT datetime('2013-02-05 14:47:36.587000000')

这个JS 日期格式化函数怎么用??

  1. Q
    Date.prototype.Format = function(fmt)   
    { //author: meizz   
      var o = {   
        "M+" : this.getMonth()+1,                 //月份   
        "d+" : this.getDate(),                    //日   
        "h+" : this.getHours(),                   //小时   
        "m+" : this.getMinutes(),                 //分   
        "s+" : this.getSeconds(),                 //秒   
        "q+" : Math.floor((this.getMonth()+3)/3), //季度   
        "S"  : this.getMilliseconds()             //毫秒   
      };   
      if(/(y+)/.test(fmt))   
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
      for(var k in o)   
        if(new RegExp("("+ k +")").test(fmt))   
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
      return fmt;   


    下面是调用
            var time1 = new Date().Format("yyyy-MM-dd");
            alert(time1);

    我得出的是当前时间。怎么把他改成格式化,我从数据库读出来的 字段?
  2. A
    var d = new Date("数据库字段内容写这里,如")
    var d = new Date("2012/12/12")
    time1 = d.Format("yyyy-MM-dd");

MS Chart X轴日期格式化问题

  1. Q
    chart.ChartAreas[0].AxisX.LabelStyle.Format = "{MM/dd}";



    就算在图表样式中指定了X轴的格式,但是显示的日期格式依然会是06-05这样的格式
    请教各位大侠,该如何显示 06/05这样的格式,感谢~~
  2. A
    chart.ChartAreas[0].AxisX.LabelStyle.Format = "MM/dd";
    这样就可以了

JDBC从MySQL取datetime日期不一致

  1. Q

    这个是数据库里面的时间:

    1991-00-30 12:11:00

     

    这个是控制台输出的时间:

    1990-11-30 12:12:00

    获取日期的方法:

    rs.getTimestamp("year")

    这个是我用的日期格式化:

    SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd hh:MM:ss");

     


    问题补充:<div class="quote_title">sinly 写道</div><div class="quote_div">1991-00-30 12:11:00 <br />没用过mysql不过00月是几月啊? <br />如果时间只是差一天,那有可能是时区的问题</div> <br />哦,原来对于时间的默认值,java不消化的!!!
  2. A
    1991-00-30 12:11:00
    没用过mysql不过00月是几月啊?
    如果时间只是差一天,那有可能是时区的问题

Winfrom窗口修改点击用户密码问题

  1. Q
    我写的代码不知道怎么,无论点击哪个用户,最终结果都是修改的管理员密码,代码如下:
      private void txtOK_Click(object sender, EventArgs e)
            {
              
               
                if (this.txtNew.Text != this.txtNewAgain.Text)
                {
                    MessageBox.Show("两次输入的新密码不一致");
                    return;
                }
                string username = Program.UserName;
                //string oldpass = "";
                int count = 0;
                string str = "server=.; database=crmdb; integrated security=true;";
                using (SqlConnection sqlcnn = new SqlConnection(str))
                {
                    using (SqlCommand sqlcmm = sqlcnn.CreateCommand())
                    {
                        sqlcmm.Connection = sqlcnn;
                        sqlcmm.CommandText = "select count(*) from users where UserName='" + username + "'and PassWord='" + txtOld.Text + "'";
                        sqlcnn.Open();
                        count = (int)sqlcmm.ExecuteScalar();
                        if (count == 0)
                        {
                            MessageBox.Show("旧密码输入有误");
                            return;
                        }
                        sqlcmm.CommandText = "update users set PassWord='" + txtNew.Text + "'where username='" + username + "'";
                        sqlcmm.ExecuteNonQuery();
                        sqlcnn.Close();
                        MessageBox.Show("密码修改成功~");
                        this.DialogResult = DialogResult.OK;
                    }
                }
            }

    求代码修改,使之能获取修改点击的用户密码:
    Winfrom窗口修改点击用户密码问题

    Winfrom窗口修改点击用户密码问题

    有劳各位了~
  2. A
    string username = Program.UserName;
    这个本来就是错的, 你应该是在点击 修改用户密码的时候 获取当前选择的用户的数据,而不是什么Program.UserName
    另外,你界面设计的实在不怎么样,把数据表铺满,然后前面加一个序号,日期格式化一下,设置一下整行选择。 这样会好看很多

java根据年月编号递增

  1. Q
    要实现一个编号的问题

    格式如下:
        KH_201401(年月)_0001(按年月归类递增)) ,2014年9月的编号如:KH_201409_0001,KH_201409_0002

      当月份增到10月,要重新计算,从KH_201410_0001开始。



    请问该如何实现编程,要不要数据库序列配合?
  2. A
    你需要名称改成日期相关吧,用日期格式化实现,希望对你有帮助。
    
    
    public class Test {

    private String seq = null;
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM_00dd");

    public void print(){

    Date date = new Date();
    seq = "KH_" + sdf.format(date);
    System.out.println(seq);

    }

    public static void main(String[] args) {
    new Test().print();
    }
    }