2016-07-08 2 views
0

Ich Ausführung die folgenden Java-Code:WEEK_OF_YEAR mismacthing in JAVA und MYSQL

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
System.out.println(cal.get(Calendar.WEEK_OF_YEAR)); 
System.out.println(cal.getTime()); 

Ausgang:

Fr 8. Juli 08.56.04 BST 2016

Unten ist der Befehl, den ich in MYSQL ausgeführt habe :

select week(CURDATE()), CURDATE(); 

Ausgang:

27 2016-07-08

Wie die sowohl die Woche des Jahres Wert synchronisieren? Ich habe versucht week(CURDATE(),0) immer noch das gleiche Ergebnis, ohne TimeZone auch versucht, aber immer das gleiche Ergebnis.

+0

FYI: Die Definition von 'Calendar.WEEK_OF_YEAR' variiert je nach Gebietsschema. Vermeiden Sie diese Klasse vollständig; jetzt ersetzt durch * java.time * Klassen. –

Antwort

2

Die Definition der "ersten Woche in einem Jahr" ist eine beliebige. Sie müssen herausfinden, welche MySQL-Definition verwendet wird und Java dazu bringen, sie zu finden, oder herausfinden, was die Standard-Java-Definition ist und MySQL dazu bringen, sie zu finden.

Auf der Java-Seite, wird es von Calendar#setFirstDayOfWeek und Calendar#setMinimalDaysInFirstWeek (möglicherweise andere, überprüfen Sie die Calendar docs) beeinflusst werden.

+0

Ich brauche generische Art der Lösung –

+1

@Rajesh: Das ** ist ** eine generische Lösung: Stellen Sie sicher, dass die Regeln zwischen den beiden Systemen übereinstimmen. (Und "Ich brauche" ist eine sehr schlechte Art, um Hilfe zu bitten.) –