我一直在阅读所有帖子,了解如何申请在我的项目中获取日期和日期,但是无法弄明白(对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;
}
}
答案 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);
...