我使用自由格式日期作为搜索语法的一部分.我需要从字符串中解析日期,但只保留实际指定的日期部分.例如,"2010年11月1日"是特定日期,但"2010年11月"是"2010年11月1日"至"2010年11月30日"的日期范围.
不幸的是,DateTime.Parse和朋友解析这些日期DateTime:
DateTime.Parse("November 1, 2010") // == {11/1/2010 12:00:00 AM}
DateTime.Parse("November, 2010") // == {11/1/2010 12:00:00 AM}
Run Code Online (Sandbox Code Playgroud)
我需要知道DateTime实际解析的哪些部分以及解析器猜到的部分.基本上,我需要DateTime.Parse("November, 2010") == {11/-1/2010 -1:-1:-1}; 然后我可以看到缺少日期部分并计算整个月的日期范围.
(在内部,C#有DateTimeParse和DateTimeResult类来解析日期并保留我需要的信息,但是当日期回到公共接口时它被剥离了.我宁愿避免反思这些类,除非那是真的唯一的路线.)
有没有办法DateTime.Parse告诉我它用来解析日期的格式?或者返回的DateTime是否有未指定部分的占位符?我也愿意使用另一个日期解析器,但我希望它与内部解析器一样可靠且区域灵活.提前致谢.
编辑:我也尝试过ParseExact,但枚举所有Parse可以处理的格式似乎几乎不可能.Parse实际上接受的格式多于返回的格式DateTimeFormatInfo.GetAllDateTimePatterns,这与我可以找到的规范源代码相同.
简单的课程:
class Pair<K,V> {
}
Run Code Online (Sandbox Code Playgroud)
还有一些任务:
Collection<Pair<String,Long>> c1 = new ArrayList<Pair<String,Long>>();
Collection<Pair<String,Long>> c2 = c1; // ok
Collection<Pair<String,?>> c3 = c1; // this does not compile
Collection<? extends Pair<String,?>> c4 = c1; // ok
Run Code Online (Sandbox Code Playgroud)
为什么第三个子弹不能编译而第四个完全合法?
编译错误:
Type mismatch: cannot convert from Collection<Pair<String,Long>> to Collection<Pair<String,?>>
Run Code Online (Sandbox Code Playgroud) 我在通过事件点击发布事件时遇到了棘手的问题。我在 kCGHIDEventTap 上点击 NSSystemDefined,然后用新的事件替换该事件。我遇到的问题是,根据我发布事件的方式,它只能被某些应用程序看到。我的测试应用程序是 Opera、Firefox、Quicksilver 和 Xcode。以下是我在事件点击回调中尝试过的不同技术,以及结果。我期待每个应用程序的操作(“正确响应”);“系统提示音”表示没有绑定到那个键的系统声音。
创建一个新事件,并从回调中返回它。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGSessionEventTap,返回 null。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGAnnotatedSessionEventTap,返回 null。Opera:正确响应,Firefox:正确响应,Quicksilver:无响应/系统提示音,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventTapPostEvent 发布,返回 null。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGSessionEventTap,并返回新事件。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGAnnotatedSessionEventTap,并返回新事件。Opera:正确响应和系统哔声,Firefox:正确响应和系统哔声,Quicksilver:正确响应和系统哔声,Xcode:无响应/双系统哔声
创建一个新事件,使用 CGEventTapPostEvent 发布,并返回新事件。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
(6) 是最好的,但用户抱怨正确响应时系统会发出额外的哔哔声,我猜这来自事件的双重发布。我不确定其他组合可以尝试,或者其他地方可以看。任何人都可以提供任何指导吗?有什么方法可以同时从我的回调中返回事件并发布到带注释的水龙头而不同时执行这两项操作?
抱歉问了这么长的问题;我一直在做很多实验。
提前致谢
更新:这是我用来创建事件点击的代码:
CFMachPortRef eventTap;
eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, 0,CGEventMaskBit(NX_SYSDEFINED) | (1 << kCGEventKeyDown) | (1 << kCGEventKeyUp), myCGEventCallback, (void *)hidEventQueue);
Run Code Online (Sandbox Code Playgroud) events macos-carbon core-graphics quartz-graphics cgeventtap
我当然是一个直接的C新手,但这让我很难过.我正在研究实践的链表实现,我只是通过向split_node函数添加一个变量来获得段错误:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Node {
struct Node *child;
char *content;
};
void print_list(struct Node node);
void split_node(struct Node *node, int position);
int main() {
struct Node head, second, third;
head.content = "first";
second.content = "second";
third.content = "i'm third";
head.child = &second;
second.child = &third;
print_list(head);
split_node(&head, 3);
print_list(head);
return 0;
}
void print_list(struct Node node) {
printf("%s\n", node.content);
if(node.child) print_list(*node.child);
}
/*
Split node into two nodes, with the first position characters of the …Run Code Online (Sandbox Code Playgroud) 我的应用程序使用事件点击来捕获键盘事件,我想知道每个事件来自哪个设备(即哪个键盘).是否有一种设备识别信息以及水龙头获得的CGEvent?我查看了NSEvent的方法和各种CGEventField键,但它们似乎都不是设备唯一的.有帮助吗?
C:\Users\Itu\workspace\Compiler>hg branches
default 13:aa6af82c5458
C:\Users\Itu\workspace\Compiler>hg heads
changeset: 13:aa6af82c5458
tag: tip
user: Itun
date: Sun Sep 18 22:27:06 2011 +0400
summary: Update 1.0.0.2
changeset: 9:d36e5ac454b1
parent: -1:000000000000
user: Itu
date: Sun Sep 18 06:50:25 2011 +0400
summary: New PR
changeset: 8:758cd394d82a
user: Itun
date: Sun Sep 18 06:48:17 2011 +0400
summary: asdasd
changeset: 4:c4c981b4ff43
user: Itun
date: Sun Sep 18 03:31:58 2011 +0400
summary: Update
C:\Users\Itu\workspace\Compiler>hg merge
abort: branch 'default' has 4 heads - please merge with an explicit rev
(run …Run Code Online (Sandbox Code Playgroud) 我有一个Like按钮.单击该按钮时,会通过Ajax将一条记录插入到DB中.如果插入成功,我将按钮的名称更改为不同.
在页面中我有10多个像按钮,我想选择点击按钮.我正在尝试使用,$(this)但这不适用于此特定代码.这是代码.
$('.content').on('click', '.like_music', function(){
var music_id = $(this).parents('.music-item').attr('id');
$.ajax({
type:'POST',
url:'add_like_music.php',
data:{'music_id':music_id},
success:function(data){
alert(data);
if (data == "YES"){
$(this).html('unlike')
}
}
})
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
ajax ×1
c ×1
c# ×1
cgeventtap ×1
cocoa ×1
date-parsing ×1
datetime ×1
events ×1
generics ×1
java ×1
javascript ×1
jquery ×1
macos-carbon ×1
mercurial ×1
nsevent ×1
vertica ×1