AppInventor:如何将DateTime插入Google电子表格并仅显示最近的DateTime

时间:2014-04-08 15:25:36

标签: datetime google-visualization google-sheets app-inventor

我是这个论坛的新手,所以我希望我能在正确的地方提问。

我在从Appinventor2中创建的表单中将日期时间插入Google电子表格时遇到问题;

在app inventor2中,我创建了一个填写谷歌电子表格的表单。基本上我将Pizza Party示例(http://appinventor.mit.edu/explore/ai2/pizzaparty.html)与此示例http://puravidaapps.com/spreadsheet.php合并,以使用Google电子表格而不是融合表。

用户选择他想要订单的分钟数,然后查看按交货时间排序的表格中的所有订单。

问题A) 首先,我想将当前日期时间+所需的延迟保存到谷歌电子表格中,并按照这个新的日期时间对表格进行排序。

1)当我使用块"呼叫时钟格式时间" +"呼叫时钟addminutes"电子表格中填充了文本,但是我无法按交货日期时间对表格进行排序。事实上,我相信无论是上午/下午或每月的某天,都会对数字进行排序。所以例如,而不是凌晨4点,早上6点,下午2点,下午3点,我得到:下午2点,下午3点,凌晨4点,早上6点。

2)然后我尝试删除块"调用时钟格式时间"并在谷歌形式我保持字段格式=文本 但是谷歌电子表格填充了以下内容: java.util.GregorianCalendar中[时间= 1395531335908,areFieldsSet =真,宽大=真,区=欧洲/都柏林,Firstdayofweek可= 2,minimalDaysInFirstWeek = 4,ERA = 1,YEAR = 2014,MONTH = 2,WEEK_OF_YEAR = 12,WEEK_OF_MONTH = 4,DAY_OF_MONTH = 22,DAY_OF_YEAR = 81,DAY_OF_WEEK = 7,DAY_OF_WEEK_IN_MONTH = 4,AM_PM = 1,HOUR = 11,HOUR_OF_DAY = 23,MINUTE = 35,SECOND = 35,微差= 908,ZONE_OFFSET = 0,DST_OFFSET = 0]

3)然后我尝试删除块"调用时钟格式时间"并在谷歌形式我改变了字段格式=时间 但是谷歌电子表格并没有填充任何东西。

4)我尝试使用段块,但过了一会儿我意识到块"格式化时间"实际上返回这种格式:" hh:mm:ss AM / PM" 所以选择5个字符是不够好的,因为它没有考虑am / pm元素以及月份的日期。

5)我通过将所需的交付时间定义为新的全局变量,并通过加入块" .hour instant"来提取hh:mm格式的字符串,从而找到了临时解决方案。和" .minute"。 然而,这不是最终的解决方案,因为我提取的当然是一串文本,当排序时,01:10总是被认为小于23:50,例如,无论日期如何。

那么有没有一种方法可以实际保存谷歌电子表格而不是一串文字,但实际上是日期和时间?

问题B) 其次,我想过滤/显示只有谷歌电子表格的行的交付时间不超过1小时(以及未来交货时间的订单,例如从现在起的2小时内)())。

我尝试使用一些谷歌可视化API查询语言命令,改变谷歌电子表格的网址(如WHERE&#34; now() - 交付时间<60分钟)&#34; (不记得我写的确切代码)但不成功。

有人知道如何过滤我的结果吗?

提前致谢

alterettore

1 个答案:

答案 0 :(得分:0)

所以需要注意一些事项。

  1. 如果你提到使用Taifun的例子,你会注意到当你使用表单向Google Spreadsheets提交数据时,第一列总是一个时间戳,即使你&# 39;不提交日期或时间。尝试发送当前日期/时间是多余的 - 继续使用Google提供的内容。
  2. Google Spreadsheets(和Excel)将日期/时间存储为数字。如果要在GS中存储日期,最好的方法不是格式化文本,而是发送数字。使用AppInventor计算所需的数量。例如,今天(4月27日)在GS是41756.今天中午将是41756.5
  3. 要生成此号码,请从AI的毫秒功能开始。注意:GS和AI都使用毫秒,但它们有不同的0点,所以你必须稍微操纵一下结果。我过去在AI中使用的公式是:
    GS Date/Time = (Clock1.GetMillis(Clock1.Now) / 86400000) + 25569
  4. 希望这有帮助!