在 Xamarin C# 中显示 Google 日历 API v3 事件日期时间
Displaying Google Calendar API v3 Events dateTime in Xamarin C#
我正在尝试从 Google 日历中获取事件并将它们显示在 Xamarin.Forms 的列表视图中。
Google 当您调用 start.dateTime 时,日历使用 RFC3339 格式,格式为 yyyy-mm-dd。
我正在尝试使用类似于 .Net DateTime.ToLongDateString 方法的字符串星期几格式(2018 年 1 月 1 日星期一)。
到目前为止我的代码是这样的:
namespace TheFirstAcademy.ViewModels{
class EventListViewModel
{
public List<SchoolEvent> SchoolEvents { get; set; }
public SchoolCalendar SelectedCalendar { get; set; }
public EventListViewModel(SchoolCalendar selectedcalendar)
{
SelectedCalendar = selectedcalendar;
SchoolEvents = GetSchoolEvents();
}
public List<SchoolEvent> GetSchoolEvents()
{
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
ApiKey = "Key",
ApplicationName = "TFA Calendar Mobile App",
});
// Define parameters of request.
EventsResource.ListRequest request = service.Events.List(SelectedCalendar.SchoolCalId);
request.TimeMin = DateTime.Now;
request.ShowDeleted = false;
request.SingleEvents = true;
request.MaxResults = 10;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// List events.
Events events = request.Execute();
List<SchoolEvent> schoolEvents = new List<SchoolEvent>();
if (events.Items != null && events.Items.Count > 0)
{
foreach (var eventItem in events.Items)
{
string when = eventItem.Start.DateTime.ToString();
if (String.IsNullOrEmpty(when))
{
when = eventItem.Start.Date;
}
schoolEvents.Add(new SchoolEvent() {
EventTitle = eventItem.Summary,
EventDescription = eventItem.Description,
EventStartTime = when,
EventEndTime = eventItem.End.Date
});
}
}
return schoolEvents;
}
}
}
这最终将显示在 iOS 和 Android 的 ListView 中,使用 Xamarin.Forms。日历的事件看起来像这样:
[活动名称]
[活动地点]
开始时间:2018 年 5 月 25 日星期五 12:00 下午
结束:2018 年 5 月 26 日星期六 12:00 下午
我找到了一些参考资料:
Google 日历 v3 活动信息
https://developers.google.com/calendar/v3/reference/events
RFC to dateTime(不确定这是否是正确的方向)。
How do I parse and convert a DateTime to the RFC 3339 date-time format?
感谢任何帮助。
我通过使用找出了转换。 DateTime.Parse()
我使用 DateTime.Parse() 将 eventItem.Start.Date(它是一个字符串)转换为 DateTime。然后我将 DateTime 转换为字符串 ("ddd MMM dd, yyyy").
可能是基本的东西也许这会对某人有所帮助。
我正在尝试从 Google 日历中获取事件并将它们显示在 Xamarin.Forms 的列表视图中。
Google 当您调用 start.dateTime 时,日历使用 RFC3339 格式,格式为 yyyy-mm-dd。 我正在尝试使用类似于 .Net DateTime.ToLongDateString 方法的字符串星期几格式(2018 年 1 月 1 日星期一)。
到目前为止我的代码是这样的:
namespace TheFirstAcademy.ViewModels{
class EventListViewModel
{
public List<SchoolEvent> SchoolEvents { get; set; }
public SchoolCalendar SelectedCalendar { get; set; }
public EventListViewModel(SchoolCalendar selectedcalendar)
{
SelectedCalendar = selectedcalendar;
SchoolEvents = GetSchoolEvents();
}
public List<SchoolEvent> GetSchoolEvents()
{
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
ApiKey = "Key",
ApplicationName = "TFA Calendar Mobile App",
});
// Define parameters of request.
EventsResource.ListRequest request = service.Events.List(SelectedCalendar.SchoolCalId);
request.TimeMin = DateTime.Now;
request.ShowDeleted = false;
request.SingleEvents = true;
request.MaxResults = 10;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// List events.
Events events = request.Execute();
List<SchoolEvent> schoolEvents = new List<SchoolEvent>();
if (events.Items != null && events.Items.Count > 0)
{
foreach (var eventItem in events.Items)
{
string when = eventItem.Start.DateTime.ToString();
if (String.IsNullOrEmpty(when))
{
when = eventItem.Start.Date;
}
schoolEvents.Add(new SchoolEvent() {
EventTitle = eventItem.Summary,
EventDescription = eventItem.Description,
EventStartTime = when,
EventEndTime = eventItem.End.Date
});
}
}
return schoolEvents;
}
}
}
这最终将显示在 iOS 和 Android 的 ListView 中,使用 Xamarin.Forms。日历的事件看起来像这样:
[活动名称]
[活动地点]
开始时间:2018 年 5 月 25 日星期五 12:00 下午
结束:2018 年 5 月 26 日星期六 12:00 下午
我找到了一些参考资料: Google 日历 v3 活动信息 https://developers.google.com/calendar/v3/reference/events
RFC to dateTime(不确定这是否是正确的方向)。 How do I parse and convert a DateTime to the RFC 3339 date-time format?
感谢任何帮助。
我通过使用找出了转换。 DateTime.Parse()
我使用 DateTime.Parse() 将 eventItem.Start.Date(它是一个字符串)转换为 DateTime。然后我将 DateTime 转换为字符串 ("ddd MMM dd, yyyy").
可能是基本的东西也许这会对某人有所帮助。