2014-09-30 20 views
6

Tôi cần phải chuyển đổi chuỗi có định dạng "dd/mm/yyyy" thành loại dài. Để chuyển giá trị cho calendarProvider trong android.Android/Java chuyển đổi Ngày chuỗi thành loại dài

Hiện nay tôi có:

Calendar calendar = Calendar.getInstance(); 
long startEndDate = 0; 
Calendar currentDateInfo = Calendar.getInstance(); 
currentDateInfo.set(calendar.get(Calendar.YEAR), calendar.SEPTEMBER, calendar.get(Calendar.DAY_OF_MONTH)); 
startEndDate = currentDateInfo.getTimeInMillis(); 

tôi cần:

long startDate = *Some sort of conversion* EditText.getText(); 

Tôi đã cố gắng sử dụng SimpleDateFormat nhưng tôi đang gặp vấn đề nhận được đúng loại trở lại. Bất kì sự trợ giúp nào đều được đánh giá cao.

+0

Hiện bạn cố gắng sử dụng 'SimpleDateFormat' - đó là con đường đúng để đi. –

Trả lời

18

Bạn có thể sử dụng mã sau để nhận giá trị dài (mili giây kể từ ngày 1 tháng 1 năm 1970, 00:00:00 GMT) từ ngày Chuỗi có định dạng "dd/mm/yyyy".

try { 
    String dateString = "30/09/2014"; 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
    Date date = sdf.parse(dateString); 

    long startDate = date.getTime(); 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

Rất cảm ơn bạn. –

+0

@Ken Wolf Có thể kết hợp hai chuỗi riêng biệt, một chuỗi ngày và một chuỗi thời gian thành một chuỗi (ví dụ: "30/09/2014" và "10:00 PM" thành "30/09/2014 10: 00 PM "để có được một giá trị dài từ chuỗi kết hợp? Ngày chuỗi là định dạng" dd/MM/yyyy "và chuỗi thời gian là định dạng" h: mm a ". – AJW

+1

Có điều này là có thể - bạn chỉ cần kết hợp 2 chuỗi để tạo 1 chuỗi và phân tích cú pháp đó, bạn sẽ phải đảm bảo cả hai chuỗi tuân theo định dạng chính xác –

2

Sử dụng như mã này bạn

String[] dateArray = dateString.split("-"); 

int year = Integer.parseInt(dateArray[0]); 
int month = Integer.parseInt(dateArray[1]); 
int date = Integer.parseInt(dateArray[2]); 

GregorianCalendar gc = new GregorianCalendar(year,month,date); 
long timeStamp = gc.getTimeInMillies(); 
Các vấn đề liên quan