我和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