我正在尝试将事件添加到Android设备上的日历中,而我正在使用MonoDroid。我在Java中找到了以下示例:http://www.androidcookbook.com/Recipe.seam?recipeId=3852
我尝试将第一个代码段翻译为C#,但是我无法设置“beginTime”和“endTime”字段,特别是从Calendar.getTimeInMillis()转换为System.DateTime。这是我的代码:
DateTime epoch = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan startSpan = fromDate - epoch;
TimeSpan endSpan = toDate - epoch;
Intent intent = new Intent(Intent.ActionEdit);
intent.SetType("vnd.android.cursor.item/event");
intent.PutExtra("beginTime", startSpan.TotalMilliseconds);
intent.PutExtra("endTime", endSpan.TotalMilliseconds);
结果是from和to字段填充了今天的日期和一个长度为一小时的时间段。
如何正确设置事件的开始/结束时间?
答案 0 :(得分:2)
我过去使用过一种非常好的辅助方法。这是一个应该正确设置日期和时间的快速示例。
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
AddEvent(this, "Sample Event", DateTime.UtcNow, DateTime.UtcNow.AddHours(5));
}
public void AddEvent(Context ctx, String title, DateTime start, DateTime end)
{
var intent = new Intent(Intent.ActionEdit);
intent.SetType("vnd.android.cursor.item/event");
intent.PutExtra("title", title);
intent.PutExtra("beginTime", TimeInMillis(start));
intent.PutExtra("endTime", TimeInMillis(end));
intent.PutExtra("allDay", false);
ctx.StartActivity(intent);
}
private readonly static DateTime jan1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
private static Int64 TimeInMillis(DateTime dateTime)
{
return (Int64)(dateTime - jan1970).TotalMilliseconds;
}