Foxtable(狐表)用户栏目专家坐堂 → [求助]移动开发 为何不返回日期时间型的时间部分-已j解决


  共有1875人关注过本帖树形打印复制链接

主题:[求助]移动开发 为何不返回日期时间型的时间部分-已j解决

帅哥哟,离线,有人找我吗?
shenyl0211
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
[求助]移动开发 为何不返回日期时间型的时间部分-已j解决  发帖心情 Post By:2017/7/29 19:47:00 [只看该作者]

      用电脑审批时,日期时间型的字段填写的时间是正常的,但手机或电脑通过浏览器审批时,时间部分显示为00:00
于是用下列代码测试,发现1~4的情况能返回日期和空白的时间,5~6的情况是错误的。刚才升级为7月28日版问题依旧。
      请问:对于1~4的情况,是我电脑的windows系统有问题吗?对于5~6的情况,代码应该怎么改?
      谢谢!

      问题在于服务端的列属性没有改为datetime。
dr("发送时间")=format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm")

    Case "test.htm"
        If e.PostValues.Count=0 Then
            wb.AddForm("","form1","test.htm")
            With wb.AddInputGroup("form1","ipg1","日期输入")
                .AddInput("日期时间","日期时间","datetime-local").Value=Format(Date.now,"yyyy-MM-ddTHH:mm")
            End With
            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "确定", "submit")
            End With
        Else
            dr=DataTables("待批任务").AddNew
        1  dr("发送时间")=Date.now '结果2017-07-29 00:00
        2  dr("发送时间")=format(Date.now,"yyyy-MM-ddTHH:mm") '结果:2017-07-29 00:00
        3  dr("发送时间")=format(Date.now,"yyyy-MM-dd HH:mm") '结果:2017-07-29 00:00
        4  dr("发送时间")=e.PostValues("日期时间") '结果:2017-07-29 00:00 -因为“日期时间”中含T: e.PostValues("日期时间")=2017-07-29T12:34
        5  dr("发送时间")=format(e.PostValues("日期时间"),"yyyy-MM-ddTHH:mm") '结果:从字符串"yyyy-MM-ddTHH:mm"到类型"Date"的转换无效.-因为“日期时间”中含T
        6  dr("发送时间")=format(e.PostValues("日期时间"),"yyyy-MM-dd HH:mm") '结果:从字符串"yyyy-MM-dd HH:mm"到类型"Date"的转换无效.-因为“日期时间”中含T
            dr.Save
        End If
[此贴子已经被作者于2017/7/30 17:11:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/30 10:20:00 [只看该作者]

 

dr("发送时间")=format(cDate(e.PostValues("日期时间").Replace("T", "")),"yyyy-MM-dd HH:mm")

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/7/30 11:09:00 [只看该作者]

谢谢甜版,5~6情况的问题解决了,不过少个空格:
dr("发送时间")=format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm")
但是,时间部分还是没有传递,确认foxtable没问题吗?是windows系统的问题吗?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/30 11:23:00 [只看该作者]

你电脑问题吧?afterOpenProject写代码

 

Dim cd As System.Globalization.DateTimeFormatInfo = System.Globalization.DateTimeFormatInfo.CurrentInfo
cd.ShortDatePattern = "yyyy年MM月dd日"
Dim DateInfo As System.Reflection.FieldInfo = cd.Gettype.GetField("generalLongTimePattern", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance)
If  DateInfo IsNot Nothing Then
    DateInfo.SetValue(cd, "yyyy-MM-dd HH:mm:ss")
End If


 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/7/30 11:40:00 [只看该作者]

截图
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170730113824.png
图片点击可在新窗口打开查看
第1-2行是服务器的日期,

第3行是我本机的日期,对第2行克隆后产生的,

第4行是代码测试的

证明本机和服务器的时间格式没问题。

本机的BeforeOpenProject代码

'修改系统日期格式
Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International","sShortDate","yyyy-MM-dd")
Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International","sLongDate","yyyy-MM-dd")
Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International","sShortTime","HH:mm")
Registry.SetValue("HKEY_CURRENT_USER\Control Panel\International","sTimeFormat","HH:mm:ss")

[此贴子已经被作者于2017/7/30 11:45:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/30 11:44:00 [只看该作者]

1、直接msgbox(Date.now) 提示什么?

 

2、你发送时间列有问题吧?是长日期类型吗?


 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/7/30 11:49:00 [只看该作者]

看5楼。

msgbox(Date.now) 、format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm") 都是正确的

双击空格输入的日期和时间也是正确的

[此贴子已经被作者于2017/7/30 11:52:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/7/30 12:05:00 [只看该作者]

只要确认foxtable没问题就行

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/30 12:11:00 [只看该作者]

以下是引用shenyl0211在2017/7/30 11:49:00的发言:

看5楼。

msgbox(Date.now) 、format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm") 都是正确的

双击空格输入的日期和时间也是正确的

[此贴子已经被作者于2017/7/30 11:52:48编辑过]

 

时间部分没有传递?事件永远是00:00这个意思?我测试没问题。


 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/7/30 12:20:00 [只看该作者]

那我就重装系统试试。


解决了。与系统无关。问题在于服务端的列属性没有改为datetime。

[此贴子已经被作者于2017/7/30 17:12:01编辑过]

 回到顶部