首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CalendarView.setTime问题

CalendarView.setTime问题
EN

Stack Overflow用户
提问于 2014-02-17 21:36:59
回答 1查看 416关注 0票数 0

我在试图在.setTime对象上使用CalendarView时遇到了问题,请参阅下面的代码。

代码语言:javascript
复制
package com.example.calendar_test;

import java.util.Calendar;
import java.util.Date;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.text.format.DateFormat;
import android.text.format.Time;
import android.view.Menu;
import android.view.View;
import android.widget.CalendarView;
import android.widget.Toast;
import android.widget.CalendarView.OnDateChangeListener;

public class MainActivity extends Activity {
CalendarView cv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    long startDate;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    cv = (CalendarView) this.findViewById(android.R.id.content).findViewById(R.id.calendarView1);
    startDate = cv.getDate();
    cv.setDate(cv.getDate());
    final Context context = this;

    cv.setOnDateChangeListener(new OnDateChangeListener(){
         public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
             Date selDate = new Date();
             selDate.setMonth(month);
             selDate.setYear(year);
             selDate.setDate(dayOfMonth);
             selDate.setTime(selDate.getTime());

             view.setDate(selDate.getTime());

             Date d = new Date();
             d.setMonth(2);
             d.setYear(2014);
             d.setDate(22);
             d.setTime(d.getTime());

             if(view.getDate() == d.getTime()){
                 Toast.makeText(context, "You hit the 22", Toast.LENGTH_SHORT).show();

             }

         }

    });

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}



}

当我运行时,我会在选择日期时收到这条消息。02-17 15:50:30.501: E/MessageQueue-JNI(1098):java.lang.IllegalArgumentException:时间不介于1900年1月01日00:00:00时和1900年12月31日星期五

在view.setDate(selDate.getTime())上爆炸;

我不太明白为什么selDate.getTime()不是view.setDate()的有效长

有没有人?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-18 02:08:50

创建Date对象时,其year值为当前年份减去1900。这是计算自1970年1月1日00:00:00以来经过的毫秒数的有效值。当您从参数列表修改Date对象的Date值时,这些毫秒超出了范围,因为参数列表中的year只是当前年份(没有负1900)。

你应该换掉

selDate.setYear(year);selDate.setYear(2014);

使用

selDate.setYear(year-1900);selDate.setYear(114);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21839747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档