Java和Oracle中的日期转换

时间:2014-07-09 11:33:04

标签: java oracle

我和oracle一起工作。我的java代码有问题。此问题与日期有关。

在我的本地环境中,我有这种日期

Tue Jul 08 00:00:00 GMT + 03:00 2014

但在服务器中使用相同的代码我有这个日期

2014年7月8日星期二00:00:00 PDT 2014

我使用此代码

 public String getDatehjri(String date_hijrio){
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        String fromHj = null;
        String s = date_hijrio;              
        try{
           Date dFrom = sdf.parse(s);    
           fromHj= licenseService.convertDateMiladiToHijri(dFrom); 
         }catch(Exception e){
            e.printStackTrace();
         }
         return fromHj;
    }

  public String convertDateMiladiToHijri(Date dateMiladi)
            throws Exception {

            dateMiladi = DateUtil.convertStringToDate(DateUtil.getDateTime("dd/MM/yyyy 00:00:00", dateMiladi));



            MiladiToHijri miladiToHijri = LicenseManagerImpl.instance.getHijriDate(dateMiladi);

            long day = ((dateMiladi.getTime() - miladiToHijri.getMDate().getTime()) / ONE_DAY) + 1;

            String dateHijri = miladiToHijri.getHYear() + "-" + miladiToHijri.getMonthNo() + "-" + day;

            return dateHijri;
        }



 public MiladiToHijri getHijriDate(Date date) throws Exception {
        return this.miladiToHijriDaoImpl.getHijriDate(date);
    } 


   public  MiladiToHijri getHijriDate(Date date) throws Exception {

        String dateStr = DateUtil.getDateTime("dd/MM/yyyy 00:00:00", date);

         String query = null;

        query = "SELECT h_year, month_no, m_date FROM (SELECT *   FROM MILADI_TO_HIJRI  WHERE m_date <= TO_DATE('" + dateStr + "', 'DD/MM/YYYY HH24:MI:SS')   ORDER BY h_year desc, month_no desc ) WHERE ROWNUM <= 1";

        Integer hYear = -1;
        Integer hMonth = -1;
        Date mDate = null;

        Transaction tx = null;

        try {
            tx = getSession().beginTransaction();

            HibernateWork hibernateWork = new HibernateWork(query);
            getSession().doWork(hibernateWork);

            ResultSet rs = hibernateWork.getResultSet();

            if (rs.next()) {
                hYear = rs.getInt("h_year");
                hMonth = rs.getInt("month_no");
                mDate = rs.getDate("m_date");
            }

            tx.commit();
        } catch (Exception e) {
            tx.rollback();
            e.printStackTrace();
        }

        return new MiladiToHijri(hMonth, hYear, mDate);
    }

更新

我使用相同的显示来查找错误

 public String convertDateMiladiToHijri(Date dateMiladi)
            throws Exception {

            dateMiladi = DateUtil.convertStringToDate(DateUtil.getDateTime("dd/MM/yyyy 00:00:00", dateMiladi));

            MiladiToHijri miladiToHijri = LicenseManagerImpl.instance.getHijriDate(dateMiladi);


            System.out.println("  time   "+dateMiladi.getTime());
            System.out.println("  mdate   "+miladiToHijri.getMDate());



            long day = ((dateMiladi.getTime() - miladiToHijri.getMDate().getTime()) / ONE_DAY) + 1;

            String dateHijri = miladiToHijri.getHYear() + "-" + miladiToHijri.getMonthNo() + "-" + day;

            return dateHijri;
        }

我有这个结果

01:55:39,143 INFO  [stdout] (http--10.1.2.154-8080-6)   time   1404802800000

01:55:39,147 INFO  [stdout] (http--10.1.2.154-8080-6)   mdate   null

这是我的java课程 MiladiToHijri

import java.util.Date;

/**
 * MiladiToHijri generated by hbm2java
 */
public class MiladiToHijri implements java.io.Serializable {
    private static final long serialVersionUID = 1L;
    private Integer monthNo;
    private Integer HYear;
    private Date MDate;
public MiladiToHijri() {
    // TODO Auto-generated constructor stub
}

    public MiladiToHijri(Integer monthNo, Integer hYear) {
        super();
        this.monthNo = monthNo;
        HYear = hYear;
    }

    public MiladiToHijri(Integer monthNo, Integer hYear, Date mDate) {
        super();
        this.monthNo = monthNo;
        HYear = hYear;
        MDate = mDate;
    }

    public Integer getMonthNo() {
        return monthNo;
    }

    public void setMonthNo(Integer monthNo) {
        this.monthNo = monthNo;
    }

    public Integer getHYear() {
        return HYear;
    }

    public void setHYear(Integer hYear) {
        HYear = hYear;
    }

    public Date getMDate() {
        return MDate;
    }

    public void setMDate(Date mDate) {
        MDate = mDate;
    }




}

如您所见,我使用 import java.util.Date;

返回 miladiToHijri.getMDate()的问题 null

0 个答案:

没有答案