2011-10-29 36 views
5

tôi có mã này rất đơn giản:ngày Java trong tuần từ chuỗi

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
Date date = format.parse("2011-10-29"); 
calendar.setTime(date); 
Log.d("Debug","Day of the week = "+(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)); 

Các 29 tháng 10 là ngày Thứ Bảy vậy tại sao tôi nhận sai?

+1

Trường hợp nào là cá thể Lịch của bạn bằng cách sử dụng? Có lẽ điều đó tạo ra sự khác biệt, bởi vì mã này trả về sự thật cho tôi. – Craigy

+0

Thật sao? Tôi đã làm Calendar.getInstance(); có sai không? –

+0

@doubter: đăng nhập ngày dương lịch để xem những gì bạn đã chuyển vào như ngày –

Trả lời

5

Dưới đây là một ví dụ về cách này có thể xảy ra ...

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date = null; 
    try { 
     date = format.parse("2011-10-29"); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
    calendar.setTime(date); 
    System.out.println("Day of the week = " 
      + (calendar.get(Calendar.DAY_OF_WEEK))); 
    System.out.println("Saturday? " 
      + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)); 

    try { 
     date = format.parse("2011-10-29"); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    calendar = Calendar.getInstance(TimeZone.getTimeZone("PST")); 
    calendar.setTime(date); 
    System.out.println("Day of the week = " 
      + (calendar.get(Calendar.DAY_OF_WEEK))); 
    System.out.println("Saturday? " 
      + (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)); 

mà kết quả đầu ra

Day of the week = 7 
Saturday? true 
Day of the week = 6 
Saturday? false 

nên có, tùy thuộc vào những gì múi giờ bạn đang ở trong nó sẽ hoặc sẽ không có thứ bảy .

+0

ngày trong tuần không phụ thuộc vào múi giờ, 2011-10-29 là Thứ Bảy ở khắp mọi nơi –

0

Bắt đúng với đoạn mã sau:

try { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
     Date date = format.parse("2011-10-29"); 
     Calendar cal = GregorianCalendar.getInstance(); 
     cal.setTime(date); 
     System.out.println(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 

Có lẽ một thiết lập miền địa phương?

Các vấn đề liên quan