編輯:關於Android編程
效果圖:

使用了 一個時間相關的工具類
package com.yqy.yqy_date;
import android.util.Log;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 時間工具類
* @author YQY
*
*/
public class ToolDateTime {
/** 日期格式:yyyy-MM-dd HH:mm:ss **/
public static final String DF_YYYY_MM_DD_HH_MM_SS = yyyy-MM-dd HH:mm:ss;
/** 日期格式:yyyy-MM-dd HH:mm **/
public static final String DF_YYYY_MM_DD_HH_MM = yyyy-MM-dd HH:mm;
/** 日期格式:yyyy-MM-dd **/
public static final String DF_YYYY_MM_DD = yyyy-MM-dd;
/** 日期格式:HH:mm:ss **/
public static final String DF_HH_MM_SS = HH:mm:ss;
/** 日期格式:HH:mm **/
public static final String DF_HH_MM = HH:mm;
private final static long minute = 60 * 1000;// 1分鐘
private final static long hour = 60 * minute;// 1小時
private final static long day = 24 * hour;// 1天
private final static long month = 31 * day;// 月
private final static long year = 12 * month;// 年
/** Log輸出標識 **/
private static final String TAG = ToolDateTime.class.getSimpleName();
/**
* 將日期格式化成友好的字符串:幾分鐘前、幾小時前、幾天前、幾月前、幾年前、剛剛
*
* @param date
* @return
*/
public static String formatFriendly(Date date) {
if (date == null) {
return null;
}
long diff = new Date().getTime() - date.getTime();
long r = 0;
if (diff > year) {
r = (diff / year);
return r + 年前;
}
if (diff > month) {
r = (diff / month);
return r + 個月前;
}
if (diff > day) {
r = (diff / day);
return r + 天前;
}
if (diff > hour) {
r = (diff / hour);
return r + 個小時前;
}
if (diff > minute) {
r = (diff / minute);
return r + 分鐘前;
}
return 剛剛;
}
/**
* 將日期以yyyy-MM-dd HH:mm:ss格式化
*
* @param dateL
* 日期
* @return
*/
public static String formatDateTime(long dateL) {
SimpleDateFormat sdf = new SimpleDateFormat(DF_YYYY_MM_DD_HH_MM_SS);
Date date = new Date(dateL);
return sdf.format(date);
}
/**
* 將日期以yyyy-MM-dd HH:mm:ss格式化
*
* @param dateL
* 日期
* @return
*/
public static String formatDateTime(long dateL, String formater) {
SimpleDateFormat sdf = new SimpleDateFormat(formater);
return sdf.format(new Date(dateL));
}
/**
* 將日期以yyyy-MM-dd HH:mm:ss格式化
*
* @param dateL
* 日期
* @return
*/
public static String formatDateTime(Date date, String formater) {
SimpleDateFormat sdf = new SimpleDateFormat(formater);
return sdf.format(date);
}
/**
* 將日期字符串轉成日期
*
* @param strDate
* 字符串日期
* @return java.util.date日期類型
*/
public static Date parseDate(String strDate) {
DateFormat dateFormat = new SimpleDateFormat(DF_YYYY_MM_DD_HH_MM_SS);
Date returnDate = null;
try {
returnDate = dateFormat.parse(strDate);
} catch (ParseException e) {
Log.v(TAG, parseDate failed !);
}
return returnDate;
}
/**
* 獲取系統當前日期
*
* @return
*/
public static Date gainCurrentDate() {
return new Date();
}
/**
* 驗證日期是否比當前日期早
*
* @param target1
* 比較時間1
* @param target2
* 比較時間2
* @return true 則代表target1比target2晚或等於target2,否則比target2早
*/
public static boolean compareDate(Date target1, Date target2) {
boolean flag = false;
try {
String target1DateTime = ToolDateTime.formatDateTime(target1,
DF_YYYY_MM_DD_HH_MM_SS);
String target2DateTime = ToolDateTime.formatDateTime(target2,
DF_YYYY_MM_DD_HH_MM_SS);
if (target1DateTime.compareTo(target2DateTime) <= 0) {
flag = true;
}
} catch (Exception e1) {
System.out.println(比較失敗,原因: + e1.getMessage());
}
return flag;
}
/**
* 對日期進行增加操作
*
* @param target
* 需要進行運算的日期
* @param hour
* 小時
* @return
*/
public static Date addDateTime(Date target, double hour) {
if (null == target || hour < 0) {
return target;
}
return new Date(target.getTime() + (long) (hour * 60 * 60 * 1000));
}
/**
* 對日期進行相減操作
*
* @param target
* 需要進行運算的日期
* @param hour
* 小時
* @return
*/
public static Date subDateTime(Date target, double hour) {
if (null == target || hour < 0) {
return target;
}
return new Date(target.getTime() - (long) (hour * 60 * 60 * 1000));
}
}
package com.yqy.yqy_date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_week, tv_month;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_week = (TextView) findViewById(R.id.tv_week);
tv_month = (TextView) findViewById(R.id.tv_month);
Date mDate = new Date();
Date sDate = null;
Date eDate = null;
String sstr = ;
String estr = ;
sDate = ToolDateTime.subDateTime(mDate, (mDate.getDay() - 1) * 24);
for (int i = 0; i < 15; i++) {
eDate = ToolDateTime.addDateTime(sDate, 6 * 24);
sstr = ToolDateTime.formatDateTime(sDate,
ToolDateTime.DF_YYYY_MM_DD);
estr = ToolDateTime.formatDateTime(eDate,
ToolDateTime.DF_YYYY_MM_DD);
tv_week.append(sstr + ~ + estr +
);
sDate = ToolDateTime.addDateTime(eDate, 24);
}
SimpleDateFormat format = new SimpleDateFormat(ToolDateTime.DF_YYYY_MM_DD);
// 獲取當前月第一天:
String first = ;
String last = ;
for (int i = 0; i < 10; i++) {
Calendar c = Calendar.getInstance();
Calendar ca = Calendar.getInstance();
c.add(Calendar.MONTH, i);
c.set(Calendar.DAY_OF_MONTH, 1);// 設置為1號,當前日期既為本月第一天
first = format.format(c.getTime());
// 獲取當前月最後一天
ca.add(Calendar.MONTH, i);
ca.set(Calendar.DAY_OF_MONTH,www.2cto.com
ca.getActualMaximum(Calendar.DAY_OF_MONTH));
last = format.format(ca.getTime());
tv_month.append(first+~+last+
);
}
}
@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;
}
}
Android使用HttpClient下載圖片
在前一章中講的是Android使用HttpURLConnection下載圖片,這一章使用HttpClient下載圖片 HttpURLConnection與HttpClie
Android中的網絡技術基礎用法
有的時候用多了Android的一些開源框架用多了,就會把最基礎的一些東西給忘了,今天來重溫一下Android的網絡基礎。包括這個Http協議的網絡請求,JSON解析。使用
Android(線程二) 線程池詳解
我們在ListView中需要下載資源時,贊不考慮緩存機制,那麼每一個Item可能都需要開啟一個線程去下載資源(如果沒有線程池),如果Item很多,那麼我們可能就會無限制的
Android App 內存洩露之Handler
Android App 內存洩露之Handler Handler也是造成內存洩露的一個重要的源頭,主要Handler屬於TLS(Thread Local Storage