我们尝试使用时区偏移量解析以下ISO 8601 DateTime字符串:
final String input = "2022-03-17T23:00:00.000+0000";
OffsetDateTime.parse(input);
LocalDateTime.parse(input, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
Run Code Online (Sandbox Code Playgroud)
由于时区偏移中的冒号,两种方法都失败(这OffsetDateTime也是有意义的DateTimeFormatter.ISO_OFFSET_DATE_TIME).
java.time.format.DateTimeParseException:无法在索引23处解析文本'2022-03-17T23:00:00.000 + 0000'
但根据维基百科,时区偏移有4种有效格式:
<time>Z
<time>±hh:mm
<time>±hhmm
<time>±hh
Run Code Online (Sandbox Code Playgroud)
其他框架/语言可以解析这个字符串而没有任何问题,例如Javascript Date()或Jacksons ISO8601Utils(他们在这里讨论这个问题)
现在我们可以DateTimeFormatter使用复杂的RegEx 编写自己的,但在我看来,java.time库应该能够默认解析这个有效的ISO 8601字符串,因为它是有效的.
现在我们使用Jacksons ISO8601DateFormat,但我们更愿意使用官方date.time库来使用.你有什么方法可以解决这个问题?
我在使用NUnit的xamarin工作室中编写UnitTests(没有与设备和东西进行集成测试)的monotouch和monodroid.
这很好用,除了我没有看到任何日志输出创建的问题Debug.WriteLine.
有人知道如何在xamarin工作室中激活它吗?
谢谢!
我们尝试使用几个选项卡构建应用程序.作为参考项目,我们使用该示例:http://slodge.blogspot.co.uk/2013/06/n25-tabs-n1-days-of-mvvmcross.html
为了获得我们需要创建选项卡的ViewModel实例,我们使用了"HomeViewModel" - 该帖子中提到的模式:使用MVVMCross内置工厂创建视图模型?
我不喜欢这种方法是使用"new"初始化ViewModel.据我所知,它跳过了我们真正喜欢的整个ViewModel-Lifecycle(https://github.com/slodge/MvvmCross/wiki/View-Model-Lifecycle).在我们当前的项目中,我们想使用"start()"生命周期方法,但由于使用"new"进行初始化,因此永远不会调用它.
对我们有用的是这样:
var loaderService = Mvx.Resolve<IMvxViewModelLoader>();
var vm = (UserListViewModel)loaderService.LoadViewModel(new MvxViewModelRequest(typeof(UserListViewModel), null, null, null), null);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:这是做这项工作的方式还是只是一个肮脏的解决方法,还有一个更好的解决方案?
更新:我们找到了解决方案:
CreateTabFor<SettingsViewModel>("Settings", "settings");
Run Code Online (Sandbox Code Playgroud)