gpt4 book ai didi

android - 解析 CalendarContract.Events.DURATION 值

转载 作者:行者123 更新时间:2023-11-29 15:49:45 25 4
gpt4 key购买 nike

我正在查询我的日历并显示所有事件结果。当我尝试解析值 CalendarContract.Events.DURATION 时,我得到的是 RFC2445 字符串格式。

例如,我收到“P15M”,我知道这是 15 分钟的 session 。在网上搜索如何解析 RFC2445 之后,我发现了一些 google jar here

但是是否有任何静态类来解析这些格式?编译一个 jar 并仅将其用于 1 个功能,这不是很好......

感谢帮助

最佳答案

我遇到了和你一样的问题,四处寻找并在某处找到了以下有用的 fragment 。我对它进行了一些重构,因此它会更具可读性。希望对您有所帮助!

 public static long RFC2445ToMilliseconds(String str)
{


if(str == null || str.isEmpty())
throw new IllegalArgumentException("Null or empty RFC string");

int sign = 1;
int weeks = 0;
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;

int len = str.length();
int index = 0;
char c;

c = str.charAt(0);

if (c == '-')
{
sign = -1;
index++;
}

else if (c == '+')
index++;

if (len < index)
return 0;

c = str.charAt(index);

if (c != 'P')
throw new IllegalArgumentException("Duration.parse(str='" + str + "') expected 'P' at index="+ index);

index++;
c = str.charAt(index);
if (c == 'T')
index++;

int n = 0;
for (; index < len; index++)
{
c = str.charAt(index);

if (c >= '0' && c <= '9')
{
n *= 10;
n += ((int)(c-'0'));
}

else if (c == 'W')
{
weeks = n;
n = 0;
}

else if (c == 'H')
{
hours = n;
n = 0;
}

else if (c == 'M')
{
minutes = n;
n = 0;
}

else if (c == 'S')
{
seconds = n;
n = 0;
}

else if (c == 'D')
{
days = n;
n = 0;
}

else if (c == 'T')
{
}
else
throw new IllegalArgumentException ("Duration.parse(str='" + str + "') unexpected char '" + c + "' at index=" + index);
}

long factor = 1000 * sign;
long result = factor * ((7*24*60*60*weeks)
+ (24*60*60*days)
+ (60*60*hours)
+ (60*minutes)
+ seconds);

return result;
}

关于android - 解析 CalendarContract.Events.DURATION 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30890829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com