在android中检索日期

时间:2012-07-31 12:46:23

标签: android date

在我的应用程序中,我有3个文本视图水平排列,第一个previmage,第二个日期,第3个nextimage.Now,当我点击第一个textview我应该应该显示上个月,(它的打印)再次点击意味着它应该去当月的第二个月,这应该继续下去。但是,当我点击第二次它是第一个月前来它只是它不会倒退..请帮助我。谢谢你提前..

这是我的代码:

prvmon.setOnClickListener(new View.OnClickListener() 
    {       
        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            System.out.println("Inside left");
            TextView date=(TextView)findViewById(R.id.date);
            Calendar cal= Calendar.getInstance();
            cal.add(cal.MONTH,-1);
            Date date1=cal.getTime();
            System.out.println("sssssss="+date1);
            cal.setTime(date1);
            SimpleDateFormat month_date = new SimpleDateFormat("MMMMM yyyy");
            String month_name = month_date.format(cal.getTime());  
            date.setText(month_name);   
        }
    });

3 个答案:

答案 0 :(得分:1)

原因是您每次都在初始化Calender实例。因此,它采用当前的日期/时间实例。所以,更好的是一次初始化并再次使用它。全局声明它并在onCreate()中初始化它。

Calendar calendar = null;

protected void onCreate(Bundle savedInstanceState){

calendar = Calendar.getInstance();
...
}

现在,在onClick()事件中使用此日历实例。

答案 1 :(得分:0)

Date date1=cal.getTime();

你总是把它设置在同一时间并“回到过去一个月”。因此,在onClick之外定义日期date1 = cal.getTime()或跟踪需要减去的月数,例如:在onClick()的末尾递增一些值。

编辑:

好的,让我们再看看你的代码

final int clicks = 0; //we'll use this to track clicks
prvmon.setOnClickListener(new View.OnClickListener() 
{       
    @Override
    public void onClick(View arg0) 
    {
        int monthsToGo = --clicks;
        // TODO Auto-generated method stub
        System.out.println("Inside left");
        TextView date=(TextView)findViewById(R.id.date);
        Calendar cal= Calendar.getInstance();
        cal.add(cal.MONTH, monthsToGo); //now it'll deduce -1 then -2 etc...
        Date date1=cal.getTime();
        System.out.println("sssssss="+date1);
        cal.setTime(date1);
        SimpleDateFormat month_date = new SimpleDateFormat("MMMMM yyyy");
        String month_name = month_date.format(cal.getTime());  
        date.setText(month_name);   
    }
});

答案 2 :(得分:0)

可能是一个完整的例子会有所帮助:

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MonthActivity extends Activity {

    private Calendar calendar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.test);

        calendar = Calendar.getInstance();
        calendar.setTime(new Date());

        final TextView textView = (TextView) findViewById(R.id.dateTextView);
        updateTextView(textView);

        Button prev = (Button) findViewById(R.id.prevCmd);
        prev.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calendar.add(Calendar.MONTH, -1);
                updateTextView(textView);

            }
        });

        Button next = (Button) findViewById(R.id.nextCmd);
        next.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                calendar.add(Calendar.MONTH, 1);
                updateTextView(textView);

            }
        });
    }

    private void updateTextView(TextView textView) {
        textView.setText(""
                + calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT,
                        Locale.getDefault()));

    }
}

和布局XML文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout12"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/prevCmd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text=" &lt; " />

    <TextView
        android:id="@+id/dateTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/nextCmd"
        android:layout_toRightOf="@+id/prevCmd"
        android:gravity="center_vertical|center_horizontal"
        android:paddingTop="8dp"
        android:text="Jul"
        android:textColor="#ffffff"
        android:textSize="20dp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/nextCmd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text=" > " />

</RelativeLayout>