获得一天和一天使用DateFormat类的日期字符串 - Android

时间:2014-01-10 04:48:21

标签: java android date android-fragments date-format

我一直在阅读所有帖子,了解如何申请在我的项目中获取日期和日期,但是无法弄明白(对Java来说很新)。

我有一个带有时间戳的按钮,但我必须将此时间戳转换为星期几,日期。例如:2014年1月4日星期二。

日期应该是用户点击按钮的当前日期。 建议我们使用DateFormat类(目前尚未在我的片段文件中使用它),所以请在答案中考虑。

但是,我已经编写了大部分代码,因此它必须与所有内容完美匹配,因此我无法解释过多。对这一挑战的任何想法?我已经将Crime.java文件方法更改为DateFormat(它之前只使用了Date类),但是其他主要的片段文件需要使用该信息,只是不知道如何去做。

这是我的主要片段文件,我正在构建时间码(时间部分):

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {

mDateButton = (Button)v.findViewById(R.id.crime_date);
        mDateButton.setText(mCrime.getDate().toString());
        mDateButton.setEnabled(false);

}

代码的中间部分需要改变一些东西。目前它会显示一个时间戳,但我不知道为什么(它必须是Date类上调用的getDate()的默认值?)

这是我单独的Crime类文件,包含我的所有实例(整个文件):

 public class Crime {

        private UUID mId;
        private String mTitle;
        private DateFormat mDate;
        private boolean mSolved;

        public Crime() {
            //Generate unique identifier
            mId = UUID.randomUUID();
            mDate = new DateFormat();
        }

        public String getTitle() {
            return mTitle;
        }

        public void setTitle(String title) {
            mTitle = title;
        }

        public UUID getId() {
            return mId;
        }

        public DateFormat getDate() {
            return mDate;
        }

        public void setDate(DateFormat date) {
            mDate = date;
        }

        public boolean isSolved() {
            return mSolved;
        }

        public void setSolved(boolean solved) {
            mSolved = solved;
        }


    }

4 个答案:

答案 0 :(得分:2)

我认为你对日期格式感到困惑,

来自Java Docs

  

DateFormat是日期/时间格式化子类的抽象类   它以与语言无关的格式和分析日期或时间   方式。日期/时间格式化子类,例如SimpleDateFormat,   允许格式化(即日期 - >文本),解析(文本 - >日期),   和规范化。日期表示为Date对象或表示为   自1970年1月1日00:00:00 GMT以来的毫秒数。

您需要定义DateFormat模式,就像我的情况一样dd-MMM-yyyy HH:mm:ss,例如:

private static ThreadLocal<SimpleDateFormat> simpleDateFormatPool = new ThreadLocal<SimpleDateFormat>(){
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("EEEE dd-MMM-yyyy HH:mm:ss");
        };
    };

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SimpleDateFormat dateFormat = null;
        if(dateFormat == null){
            dateFormat = simpleDateFormatPool.get();
        }
        System.out.println(dateFormat.format(new Date(System.currentTimeMillis())));
    }

输出

Friday 10-Jan-2014 10:41:19

答案 1 :(得分:2)

你可以试试这个

Date d1 =new Date();
SimpleDateFormat date = new SimpleDateFormat("EEEE, MMM'.', dd'th', yyyy");
System.out.println(date.format(d1));

OUTPUT:   
 Tuesday, Jan. 4th, 2014.

答案 2 :(得分:1)

您可以尝试:

String formattedDate = null;

long timeInMillis = System.currentTimeMillis();
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(timeInMillis);
SimpleDateFormat dateFormat = new SimpleDateFormat(
                                        "EEEE, MMM, dd, yyyy");
formattedDate = dateFormat.format(cal1.getTime());

这将为您提供输出:Friday, Jan, 10, 2014

希望这能给出一些想法。

答案 3 :(得分:1)

由于你坚持使用DateFormat,它似乎不像SimpleDateFormat选项那样灵活。不过,您可以使用它来满足您的原因,如下所示:

<强>假设: 您正在使用

import java.text.DateFormat;

您修改过的代码:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
     mDateButton = (Button)v.findViewById(R.id.crime_date);
     mCrime.setDate(DateFormat.getDateInstance(DateFormat.FULL));
     mDateButton.setText(mCrime.getDate().format(new Date()));
     mDateButton.setEnabled(false);
...

修改 由于您的DataFormat类型为android.text.format.DateFormat,因此请将您的代码更改为以下内容:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
     mDateButton = (Button)v.findViewById(R.id.crime_date);
     mDateButton.setText(android.text.format.DateFormat.format("EEEE, MMM dd yyyy", new java.util.Date()));
     mDateButton.setEnabled(false);
...