2015-03-30 89 views
0

問題不容易解決。小數點(。)作爲java應用程序中的分隔符和Oracle數據庫中的逗號(,)分隔符

  1. 用下面的代碼,

    Locale.setDefault(new Locale("fr", "FR")); 
    

    浮子的格式是123 456,45和日期格式爲30個火星2015

  2. 用下面的代碼,

    Locale.setDefault(new Locale("en", "US")); 
    

    float的格式爲123,456.45,日期格式爲2015年3月30日。

如何設置默認Locale擁有123,456.45和30 mars 2015?我的意思是英文格式的日期和其他屬性的浮法和法文格式?是否可以設置法語格式的區域設置並僅更改小數點分隔符(。)?

我想解決的問題如下: 我想從jdbcTemplate和float和date參數調用Java的PL/SQL過程。數據庫設置爲點(。)作爲小數點分隔符和組的逗號。 Java應用程序使用默認的Locale設置爲法語(fr_FR)。但是在執行應用程序時,PL/SQL過程中會出現錯誤,因爲小數點分隔符不相同。日期格式在數據庫和Java應用程序中是相同的。我無法更改數據庫設置。我怎樣才能無誤地執行PL/SQL過程?

感謝您的幫助。

+0

您可以顯式地指定格式(例如不使用默認Locale)在解析站點。 – user2864740 2015-03-30 20:29:34

+0

我會建議爲您的'NumberFormat'和'DateFormat'實例使用正確的語言環境,而不是更改默認的'Lo​​cale'。 – 2015-03-30 20:29:41

回答

1

每次您想格式化某些內容時,您都不必操作默認的LocaleNumberFormat類和DateFormat類都有用於獲取特定語言環境中的數字和日期格式化程序的靜態方法。

對於NumberFormat,請使用the getNumberInstance method that takes a Locale as a parameter

double value = 123456.45; 
NumberFormat english = NumberFormat.getNumberInstance(new Locale("en", "US")); 
System.out.println(english.format(value)); 

輸出:

123,456.45 

對於DateFormat,使用the getDateInstance method that takes a Locale as a parameter

Date now = new Date(); 
DateFormat french = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("fr", "FR")); 
System.out.println(french.format(now)); 

輸出:

30 mars 2015 
+0

這個問題實際上是在其他地方,與數據庫連接。 oracle中的數據庫以點(。)作爲小數點分隔符,逗號(,)作爲組。語言環境設置爲法語。當使用jdbcTemplate將java應用程序的float和date參數發送到oracle pl/sql過程時,由於兩種不同的小數格式,float參數在pl/sql過程中引發錯誤。你的解決方案能解決問題嗎? – IntegraleOne 2015-03-30 20:56:42

+0

@IntegraleOne啊哈,[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你爲什麼不重新制定最重要的問題來說出你的真實問題?並添加適當的標籤。瞭解Spring和Oracle的人會更好地幫助你。 – RealSkeptic 2015-03-30 21:05:35

+0

是否可以創建自己的語言環境?例如,通過複製法文文件並在小數點後用點(「。」)設置? – IntegraleOne 2015-04-19 09:25:27

相關問題