我的布局中有CalendarView
并且我已将日期更改侦听器添加到其中:
calendarView = (CalendarView)findViewById(R.id.calendarView);
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Log.i("View.getDate", view.getDate() + "");
}
});
我可以访问所选日期的年,月和日。但是如何获得一周中的哪一天呢?我想要在CalendarView
。
我在日志中添加了view.getDate()
,只是为了知道它在我选择的每个日期都给了我相同的输出(今天和第三天的值)。我错过了什么?
更新
calendar.set(year, month, dayOfMonth);
正确设置日历值,而以下内容:
calendar.setTimeInMillis(view.getDate());
没有按'吨。不知道原因。
答案 0 :(得分:2)
例如:
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, dayOfMonth);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
}
});
答案 1 :(得分:0)
使用Android日历类。
Calendar selected = Calendar.getInstance();
selected.setTimeInMillis(view.getDate());
int dayOfWeek = selected.get(Calendar.DAY_OF_WEEK);
switch (dayOfWeek ) {
case Calendar.SUNDAY:
// ...
case Calendar.MONDAY:
// etc ...
}
答案 2 :(得分:0)
这应该不难,例如这是否回答了你的问题? Android: how to get the current day of the week (Monday, etc...) in the user's language?
答案 3 :(得分:0)
尝试使用日历并在日历视图中设置它:
Calendar selected = Calendar.getInstance();
selected.setTimeInMillis(calendarView .getDate());
int dayOfWeek = selected.get(Calendar.DAY_OF_WEEK);
答案 4 :(得分:0)
final JsonObjectRequest request = new JsonObjectRequest(JsonObjectRequest.Method.POST,
url, json,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
TextView mTextView = (TextView) findViewById(R.id.output);
print("Success");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
TextView mTextView = (TextView) findViewById(R.id.output);
print("Failure (" + error.networkResponse.statusCode + ")");
}
}){
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
return super.parseNetworkError(volleyError);
}
@Override
public void deliverError(VolleyError error) {
super.deliverError(error);
}
};
然后你可以使用Calendar.MONDAY,Calendar.TUESDAY等。
希望这有用。
答案 5 :(得分:0)
使用java api中的Calender类。
calendarView = (CalendarView)findViewById(R.id.calendarView);
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Log.i("View.getDate", view.getDate() + "");
/*
for month you can use following. like
0 for jan
1 for feb
*/
int newMonth;
if(month > 9){
newMonth= month-1;
}
else{
switch(month){
case (1|01):{
newMonth = 0;
}
break;
case (2|02):{
newMonth = 1;
}
break;
....
}
}
Calendar calendar = new GregorianCalendar(year, newMonth
, dayOfMonth);
int result = calendar.get(Calendar.DAY_OF_WEEK);
switch (result) {
case Calendar.MONDAY:
System.out.println("It's Monday !");
break;
}
}
});
我希望,这会对你有帮助..
答案 6 :(得分:0)
太晚了,但是很好,我遇到了同样的问题。我用这个解决了。
public static int dayOfWeek(int day, int month, int year) {
Calendar c = Calendar.getInstance();
c.set(year,month,day);
return c.get(Calendar.DAY_OF_WEEK);
}
此方法以int形式返回星期几。如果是星期天,则返回1,如果是星期三,则返回4。