0

我正在尝试将事件添加到 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 字段填充了今天的日期和长度为一小时的时间段。

如何正确设置活动的开始/结束时间?

4

1 回答 1

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;
}
于 2013-01-29T14:53:17.077 回答