android - 如何在android中解析时间

标签 android datetime time

类实用程序

public static String getTimeAgo(String time) {

    String time_ago = "";
    try {
        // SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault());
        format.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date past = format.parse(time);
        Date now = new Date();
        long seconds = TimeUnit.MILLISECONDS.toSeconds(now.getTime() - past.getTime());
        long minutes = TimeUnit.MILLISECONDS.toMinutes(now.getTime() - past.getTime());
        long hours = TimeUnit.MILLISECONDS.toHours(now.getTime() - past.getTime());
        long days = TimeUnit.MILLISECONDS.toDays(now.getTime() - past.getTime());

        if (seconds < 60) {
            time_ago = seconds + " seconds ago";
        } else if (minutes < 60) {
            time_ago = seconds + " minutes ago";
        } else if (hours < 24) {
            time_ago = hours + " hours ago";
        } else {
            time_ago = days + " days ago";
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return time_ago;
}

型号

public class History{
.....
String mTime;

public String getTime() {
return Utils.getTimeAgo(mTime);

}

public void setTime(String mTime) {
this.mTime = mTime;
}
}

这是Adapter中的getView

@Override
public View getView(final int position, View view, final ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = inflater.inflate(R.layout.item_history, null);
    holder = new ViewHolder();
    holder.mTvTitle = (TextView) view.findViewById(R.id.text_title);
    holder.mTvMediaName = (TextView) view.findViewById(R.id.text_mediaName);
    holder.mTvTime = (TextView) view.findViewById(R.id.text_time);
    holder.mImageUrl = (ImageView) view.findViewById(R.id.image_url);
    view.setTag(holder);
} else {
    holder = (ViewHolder) view.getTag();
}
final History history = mListHistory.get(position);
holder.mTvTitle.setText(history.getTitle());
holder.mTvMediaName.setText(history.getMediaName());
holder.mTvTime.setText(history.getTime());
holder.mImageUrl.setImageResource(android.R.color.transparent);
Picasso.with(mContext).load(history.getImageUrl())
        //.fit().centerInside()
        .into(holder.mImageUrl);

return view;
}

我设置字符串时间 = "2016-01-24T16:00:00.000Z";

holder.mTvTime.setText(history.getTime());不显示值

这是错误:

java.text.ParseException: Unparseable date: "43 days ago" (at offset 2)

最佳答案

T用于分隔日期和时间。 Z 表示“祖鲁时间”(UTC)。

要解析这个试试这个日期格式,

try {
        Date now = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
        format.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date past = format.parse("2016-01-24T16:00:00.000Z");
        DebugTool.logD("TIMEEE " + now.getTime());
        DebugTool.logD("TIMEEE PAST" + past.getTime());
   } catch (ParseException e) {
        e.printStackTrace();
   }

请引用this SO 线程以获取更多信息。

关于android - 如何在android中解析时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35860956/

相关文章:

android - 使用 Google Cloud Endpoints 时如何避免中间人攻击?

android - 修改android中音乐播放的速度

c# - DateTime.ToBinary() 和 DateTime.ToFileTime() 有何不同?

php - 本地化月/日名称列表

java - 如果我更改值,Android 倒计时器不工作

java - Azure 认知服务检测错误 : Unable to resolve host "centralus.api.cognitive.microsoft.com"

mysql - SQL日期/时间字段查询

java - 为什么我打印的日期不对?

java - 如何在 Java 中获取当前服务器时间?

c# - 以毫秒为单位的耗时计算器 C#