直接上代码
package com.mayj.app;import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;import android.text.format.DateFormat;
import android.util.Log;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;public class DigitClockWidgetProvider extends AppWidgetProvider{
private Calendar mCalendar;
    private Locale mCurrentLocale;
    private static RemoteViews views;
    private static final ComponentName THIS_APPWIDGET = 
     new ComponentName("com.mayj.app", DigitClockWidgetProvider.class.getName());
String[]Weeks={
     "Sunday",
     "Monday",
     "Tuesday",
     "Wednesday",
     "Thursday",
     "Friday",
     "Saturday"
};
String[]Months={
     "Jan",
     "Feb",
     "Mar",
     "Apr",
     "May",
     "Jun",
     "Jul",
     "Aug",
     "Sep",
     "Oct",
     "Nov",
     "Dec"
};
    
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
//mContext=context;
// TODO Auto-generated method stub
defaultAppWidget(context, appWidgetManager, null);
}
private void defaultAppWidget(Context context,
AppWidgetManager appWidgetManager, int[] appWidgetIds) {
if(views==null){
views = new RemoteViews(context.getPackageName(),
                R.layout.main);
}
mCalendar = Calendar.getInstance(TimeZone.getDefault());

mCalendar.setTimeInMillis(System.currentTimeMillis());

 boolean b24 = DateFormat.is24HourFormat(context);
 int year = mCalendar.get(Calendar.YEAR); 
 int month = mCalendar.get(Calendar.MONTH); 
 int date = mCalendar.get(Calendar.DATE); 
 int hour = mCalendar.get(Calendar.HOUR_OF_DAY); 
 int minute = mCalendar.get(Calendar.MINUTE); 
 int weeks = mCalendar.get(Calendar.DAY_OF_WEEK); 
 
        views.setTextViewText(R.id.date, String.valueOf(date)+",");
        views.setTextViewText(R.id.month, Months[month]);
        views.setTextViewText(R.id.weeks, Weeks[weeks-1]);
        views.setTextViewText(R.id.hours, String.valueOf(hour));
        views.setTextViewText(R.id.minutes, String.valueOf(minute));
        
        System.out.println("defaultAppWidget ");
        System.out.println("year= "+year);
        System.out.println("month= "+month);
        System.out.println("date= "+date);
        System.out.println("hour= "+hour);
        System.out.println("minute= "+minute);
        System.out.println("weeks= "+weeks);
        
        pushUpdate(context, appWidgetIds, views);
}
    private void pushUpdate(Context context, int[] appWidgetIds, RemoteViews views) {
        final AppWidgetManager gm = AppWidgetManager.getInstance(context);
        if (appWidgetIds != null) {
         gm.updateAppWidget(appWidgetIds, views);
        } else {
         gm.updateAppWidget(THIS_APPWIDGET, views);
        }
    }
    @Override
    public void onReceive(Context context, Intent intent) {
     super.onReceive(context,intent);
     String action = intent.getAction();
      if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
             String tz = intent.getStringExtra("time-zone");
             mCalendar = Calendar.getInstance(TimeZone.getTimeZone(tz));
         }
      System.out.println("onReceive ");
      System.out.println("action=:"+action);
      updateAppWidget(context);
    }
    private void updateAppWidget(Context context) {
if(views==null){
views = new RemoteViews(context.getPackageName(),
                R.layout.main);
}
mCalendar = Calendar.getInstance(TimeZone.getDefault());

mCalendar.setTimeInMillis(System.currentTimeMillis());

 boolean b24 = DateFormat.is24HourFormat(context);
 int year = mCalendar.get(Calendar.YEAR); 
 int month = mCalendar.get(Calendar.MONTH); 
 int date = mCalendar.get(Calendar.DATE); 
 int hour = mCalendar.get(Calendar.HOUR_OF_DAY); 
 int minute = mCalendar.get(Calendar.MINUTE); 
 int weeks = mCalendar.get(Calendar.DAY_OF_WEEK); 
 
views.setTextViewText(R.id.date, String.valueOf(date)+",");
        views.setTextViewText(R.id.month, Months[month]);
        views.setTextViewText(R.id.weeks, Weeks[weeks-1]);
        views.setTextViewText(R.id.hours, String.valueOf(hour));
        views.setTextViewText(R.id.minutes, String.valueOf(minute));
        
        final AppWidgetManager mAppWidgetManager = AppWidgetManager.getInstance(context);
        int[] appIds = mAppWidgetManager.getAppWidgetIds(new ComponentName(
context, DigitClockWidgetProvider.class));
        mAppWidgetManager.updateAppWidget(appIds, views);

}
}styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="styleWindows">
        <item name="android:singleLine">true</item>
        <item name="android:textSize">22dip</item>
        <item name="android:shadowColor">#BB000000</item>
        <item name="android:shadowRadius">1.0</item>
<item name="android:gravity">center_vertical</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:textStyle">bold</item>
    </style>
 <style name="styleWindowsDatetime" parent="@style/styleWindows">
        <item name="android:textSize">48dip</item>
    </style>
</resources>
appwidget_provider.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="290dp"
    android:minHeight="70dp"
    android:updatePeriodMillis="2000"
    android:initialLayout="@layout/main">
</appwidget-provider>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mayj.app"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".DigitClockWidgetProvider">
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_provider"></meta-data>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.DATE_CHANGED" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>    </application>
</manifest> main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="290dip"
    android:layout_height="70dip"
    >
<LinearLayout 
android:id="@+id/LinearLayout01" 
android:orientation="vertical"
android:layout_width="120dip" 
android:layout_height="70dip">
<TextView 
android:id="@+id/weeks" 
style="@style/styleWindows"
android:layout_width="120dip" 
android:layout_height="35dip"/>
<LinearLayout 
android:id="@+id/LinearLayout04" 
android:orientation="horizontal"
android:layout_width="120dip" 
android:layout_height="35dip">
<TextView 
android:id="@+id/date" 
style="@style/styleWindows"
android:layout_width="40dip" 
android:layout_height="35dip"/>
<TextView 
android:id="@+id/month" 
style="@style/styleWindows"
android:layout_width="80dip" 
android:layout_height="35dip"/>
</LinearLayout>
</LinearLayout>
<LinearLayout 
android:id="@+id/LinearLayout02" 
android:orientation="horizontal"
android:layout_marginLeft="40dip"
android:layout_width="130dip" 
android:layout_height="70dip">
<TextView 
android:id="@+id/hours" 
style="@style/styleWindowsDatetime"
android:layout_width="60dip" 
android:layout_height="70dip"/>
<TextView 
android:text=":"
android:textSize="40dip"
         android:shadowColor="#BB000000"
         android:shadowRadius="1.0"
android:gravity="center_vertical"
android:textColor="#ffffffff"
android:textStyle="bold"
android:layout_width="10dip" 
android:layout_height="70dip"/>
<TextView 
android:id="@+id/minutes" 
style="@style/styleWindowsDatetime"
android:layout_width="60dip" 
android:layout_height="70dip"/></LinearLayout>
</LinearLayout>